diff --git a/src/module.ts b/src/module.ts index 1b3283b866..2c91e9a1d5 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2247,7 +2247,6 @@ export class Module { // --- PassRunner::addDefaultFunctionOptimizationPasses --- if (optimizeLevel >= 3 || shrinkLevel >= 1) { - passes.push("simplify-locals-notee-nostructure"); passes.push("rse"); passes.push("vacuum"); passes.push("ssa-nomerge"); @@ -2258,16 +2257,16 @@ export class Module { passes.push("precompute-propagate"); } if (optimizeLevel >= 3) { - passes.push("flatten"); - passes.push("vacuum"); passes.push("simplify-locals-notee-nostructure"); - passes.push("merge-locals"); - - passes.push("code-folding"); passes.push("flatten"); passes.push("vacuum"); passes.push("local-cse"); + passes.push("licm"); + passes.push("simplify-locals-notee-nostructure"); + passes.push("merge-locals"); passes.push("reorder-locals"); + passes.push("dae-optimizing"); + passes.push("code-folding"); } passes.push("optimize-instructions"); if (optimizeLevel >= 3 || shrinkLevel >= 1) { @@ -2285,10 +2284,7 @@ export class Module { passes.push("pick-load-signs"); passes.push("simplify-globals-optimizing"); } - if (optimizeLevel >= 3 && shrinkLevel <= 1) { - passes.push("licm"); - } - passes.push("simplify-locals-nostructure"); + passes.push("simplify-locals-notee-nostructure"); passes.push("vacuum"); passes.push("reorder-locals"); diff --git a/tests/compiler/NonNullable.optimized.wat b/tests/compiler/NonNullable.optimized.wat index ddbf4dbb62..1d95881da0 100644 --- a/tests/compiler/NonNullable.optimized.wat +++ b/tests/compiler/NonNullable.optimized.wat @@ -45,7 +45,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -59,18 +59,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -78,20 +75,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -104,33 +101,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index ef124ab14e..0c198b8d82 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -210,11 +210,11 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 @@ -226,7 +226,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -251,7 +251,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index 3bd23ba54c..995c5d8b3d 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -142,12 +142,6 @@ (func $~start (local $0 f32) (local $1 f64) - block $__inlined_func$~lib/math/ipow32 - global.get $binary/i - i32.const 2 - i32.eq - br_if $__inlined_func$~lib/math/ipow32 - end global.get $binary/i i32.const 1 i32.add @@ -166,13 +160,9 @@ global.set $binary/i i32.const 0 global.set $binary/i - global.get $binary/i - i32.const 1 - i32.and + i32.const 0 global.set $binary/i - global.get $binary/i i32.const 1 - i32.or global.set $binary/i global.get $binary/i i32.const 1 @@ -218,13 +208,9 @@ global.set $binary/I i64.const 0 global.set $binary/I - global.get $binary/I - i64.const 1 - i64.and + i64.const 0 global.set $binary/I - global.get $binary/I i64.const 1 - i64.or global.set $binary/I global.get $binary/I i64.const 1 diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index dfee42b84d..9fb655e61a 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -101,7 +101,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -115,18 +115,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -134,20 +131,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -160,33 +157,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 2b5b8c0141..fb546c7cc1 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -169,16 +169,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1488 i32.load i32.gt_u @@ -190,7 +190,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -206,26 +206,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -334,8 +334,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -343,11 +341,12 @@ 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 $2 local.get $3 i32.const 4 @@ -355,6 +354,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -366,17 +366,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -582,7 +582,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -590,6 +589,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -605,7 +605,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -613,6 +612,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -667,11 +667,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -695,11 +695,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -859,17 +859,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -929,15 +929,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1065,12 +1065,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1110,13 +1108,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1156,10 +1154,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1168,7 +1166,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1177,6 +1174,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1190,12 +1188,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1208,7 +1206,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1217,6 +1214,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1247,12 +1245,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1268,14 +1266,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1289,15 +1287,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1309,13 +1307,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1323,19 +1320,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1343,17 +1342,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1363,18 +1361,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1382,18 +1378,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1404,8 +1400,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1418,13 +1414,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1437,54 +1433,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1494,37 +1490,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1532,20 +1528,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1556,10 +1552,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1576,7 +1572,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1588,38 +1584,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1632,20 +1628,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1668,49 +1664,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1945,439 +1941,441 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer local.tee $0 - i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 38 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 + i32.store + local.get $0 + i32.const 8 i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 38 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 i32.const 8 + i32.const 7 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 56 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 56 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 10 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 9 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 11 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18000 i32.const 18048 diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index c985274597..6ca4cd18b7 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -191,16 +191,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1504 i32.load i32.gt_u @@ -212,7 +212,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1508 @@ -228,26 +228,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -356,8 +356,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -365,11 +363,12 @@ 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 $2 local.get $3 i32.const 4 @@ -377,6 +376,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -388,17 +388,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -604,7 +604,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -612,6 +611,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -627,7 +627,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -635,6 +634,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -689,11 +689,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -717,11 +717,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -881,17 +881,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -951,15 +951,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1087,12 +1087,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1230,20 +1228,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1252,18 +1251,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1271,15 +1268,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1306,12 +1303,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1321,7 +1318,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1330,19 +1327,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1373,26 +1370,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total diff --git a/tests/compiler/class-overloading-cast.optimized.wat b/tests/compiler/class-overloading-cast.optimized.wat index fc4cd3f1df..f183e1991e 100644 --- a/tests/compiler/class-overloading-cast.optimized.wat +++ b/tests/compiler/class-overloading-cast.optimized.wat @@ -205,16 +205,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1616 i32.load i32.gt_u @@ -226,7 +226,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1620 @@ -242,26 +242,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -370,8 +370,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -379,11 +377,12 @@ 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 $2 local.get $3 i32.const 4 @@ -391,6 +390,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -402,17 +402,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -618,7 +618,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -626,6 +625,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -641,7 +641,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -649,6 +648,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -703,11 +703,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -731,11 +731,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -895,17 +895,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -965,15 +965,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1101,12 +1101,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1244,20 +1242,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1266,18 +1265,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1285,15 +1282,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1320,12 +1317,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1335,7 +1332,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1344,19 +1341,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1387,26 +1384,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1448,7 +1445,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1462,18 +1459,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1481,20 +1475,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1507,33 +1501,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -1604,11 +1598,11 @@ i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -1655,7 +1649,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -1683,7 +1677,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -1711,7 +1705,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -1729,7 +1723,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1762,23 +1756,29 @@ i32.store offset=8 local.get $0 block $__inlined_func$class-overloading-cast/A#foo@virtual (result i32) - block $folding-inner0 - local.get $1 - i32.const 8 - i32.sub - i32.load - local.tee $1 - i32.const 3 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 5 - i32.eq - br_if $folding-inner0 - i32.const 1456 + block $default + block $case1 + local.get $1 + i32.const 8 + i32.sub + i32.load + local.tee $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 5 + i32.eq + br_if $case1 + br $default + end + i32.const 1488 + br $__inlined_func$class-overloading-cast/A#foo@virtual + end + i32.const 1488 br $__inlined_func$class-overloading-cast/A#foo@virtual end - i32.const 1488 + i32.const 1456 end local.tee $1 i32.store @@ -1858,7 +1858,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -1876,7 +1876,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index cebc44fb43..614313239d 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -229,16 +229,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1792 i32.load i32.gt_u @@ -250,7 +250,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1796 @@ -266,26 +266,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -394,8 +394,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -403,11 +401,12 @@ 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 $2 local.get $3 i32.const 4 @@ -415,6 +414,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -426,17 +426,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -642,7 +642,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -650,6 +649,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -665,7 +665,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -673,6 +672,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -727,11 +727,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -755,11 +755,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -919,17 +919,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -989,15 +989,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1125,12 +1125,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1268,20 +1266,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1290,18 +1289,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1309,15 +1306,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1344,12 +1341,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1359,7 +1356,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1368,19 +1365,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1411,26 +1408,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1472,7 +1469,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1486,18 +1483,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1505,20 +1499,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1531,33 +1525,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -1724,11 +1718,11 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -1854,17 +1848,17 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/A#get:c@virtual - block $default0 - block $case21 - block $case12 - block $case03 + block $default6 + block $case27 + block $case18 + block $case09 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case03 $case12 $case03 $case03 $case21 $default0 + br_table $case09 $case18 $case09 $case09 $case27 $default6 end i32.const 1520 global.set $class-overloading/which @@ -1907,30 +1901,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual4 - block $default5 - block $case26 - block $case17 - block $case08 + block $__inlined_func$class-overloading/A#b@virtual10 + block $default11 + block $case212 + block $case113 + block $case014 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case08 $case17 $case08 $case08 $case26 $default5 + br_table $case014 $case113 $case014 $case014 $case212 $default11 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual4 + br $__inlined_func$class-overloading/A#b@virtual10 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual4 + br $__inlined_func$class-overloading/A#b@virtual10 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual4 + br $__inlined_func$class-overloading/A#b@virtual10 end i32.const 1488 global.set $class-overloading/which @@ -1962,7 +1956,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2122,30 +2116,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual10 - block $default11 - block $case212 - block $case113 - block $case014 + block $__inlined_func$class-overloading/A#b@virtual21 + block $default22 + block $case223 + block $case124 + block $case025 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case014 $case113 $case014 $case014 $case212 $default11 + br_table $case025 $case124 $case025 $case025 $case223 $default22 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual10 + br $__inlined_func$class-overloading/A#b@virtual21 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual10 + br $__inlined_func$class-overloading/A#b@virtual21 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual10 + br $__inlined_func$class-overloading/A#b@virtual21 end i32.const 1488 global.set $class-overloading/which @@ -2176,30 +2170,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@virtual15 - block $default16 - block $case217 - block $case118 - block $case019 + block $__inlined_func$class-overloading/A#get:c@virtual30 + block $default31 + block $case232 + block $case133 + block $case034 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case019 $case118 $case019 $case019 $case217 $default16 + br_table $case034 $case133 $case034 $case034 $case232 $default31 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual15 + br $__inlined_func$class-overloading/A#get:c@virtual30 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual15 + br $__inlined_func$class-overloading/A#get:c@virtual30 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual15 + br $__inlined_func$class-overloading/A#get:c@virtual30 end i32.const 1488 global.set $class-overloading/which @@ -2228,30 +2222,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual20 - block $default21 - block $case222 - block $case123 - block $case024 + block $__inlined_func$class-overloading/A#b@virtual39 + block $default40 + block $case241 + block $case142 + block $case043 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case024 $case123 $case024 $case024 $case222 $default21 + br_table $case043 $case142 $case043 $case043 $case241 $default40 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual20 + br $__inlined_func$class-overloading/A#b@virtual39 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual20 + br $__inlined_func$class-overloading/A#b@virtual39 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual20 + br $__inlined_func$class-overloading/A#b@virtual39 end i32.const 1488 global.set $class-overloading/which @@ -2313,30 +2307,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual25 - block $default26 - block $case227 - block $case128 - block $case029 + block $__inlined_func$class-overloading/A#b@virtual48 + block $default49 + block $case250 + block $case151 + block $case052 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case029 $case128 $case029 $case029 $case227 $default26 + br_table $case052 $case151 $case052 $case052 $case250 $default49 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual25 + br $__inlined_func$class-overloading/A#b@virtual48 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual25 + br $__inlined_func$class-overloading/A#b@virtual48 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual25 + br $__inlined_func$class-overloading/A#b@virtual48 end i32.const 1488 global.set $class-overloading/which @@ -2367,30 +2361,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@virtual30 - block $default31 - block $case232 - block $case133 - block $case034 + block $__inlined_func$class-overloading/A#get:c@virtual57 + block $default58 + block $case259 + block $case160 + block $case061 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case034 $case133 $case034 $case034 $case232 $default31 + br_table $case061 $case160 $case061 $case061 $case259 $default58 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual30 + br $__inlined_func$class-overloading/A#get:c@virtual57 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual30 + br $__inlined_func$class-overloading/A#get:c@virtual57 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual30 + br $__inlined_func$class-overloading/A#get:c@virtual57 end i32.const 1488 global.set $class-overloading/which @@ -2419,30 +2413,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual35 - block $default36 - block $case237 - block $case138 - block $case039 + block $__inlined_func$class-overloading/A#b@virtual66 + block $default67 + block $case268 + block $case169 + block $case070 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case039 $case138 $case039 $case039 $case237 $default36 + br_table $case070 $case169 $case070 $case070 $case268 $default67 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual35 + br $__inlined_func$class-overloading/A#b@virtual66 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual35 + br $__inlined_func$class-overloading/A#b@virtual66 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual35 + br $__inlined_func$class-overloading/A#b@virtual66 end i32.const 1488 global.set $class-overloading/which @@ -2474,7 +2468,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2529,30 +2523,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual41 - block $default42 - block $case243 - block $case144 - block $case045 + block $__inlined_func$class-overloading/A#b@virtual75 + block $default76 + block $case277 + block $case178 + block $case079 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case045 $case144 $case045 $case045 $case243 $default42 + br_table $case079 $case178 $case079 $case079 $case277 $default76 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual41 + br $__inlined_func$class-overloading/A#b@virtual75 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual41 + br $__inlined_func$class-overloading/A#b@virtual75 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual41 + br $__inlined_func$class-overloading/A#b@virtual75 end i32.const 1488 global.set $class-overloading/which @@ -2583,30 +2577,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@virtual46 - block $default47 - block $case248 - block $case149 - block $case050 + block $__inlined_func$class-overloading/A#get:c@virtual84 + block $default85 + block $case286 + block $case187 + block $case088 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case050 $case149 $case050 $case050 $case248 $default47 + br_table $case088 $case187 $case088 $case088 $case286 $default85 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual46 + br $__inlined_func$class-overloading/A#get:c@virtual84 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual46 + br $__inlined_func$class-overloading/A#get:c@virtual84 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual46 + br $__inlined_func$class-overloading/A#get:c@virtual84 end i32.const 1488 global.set $class-overloading/which @@ -2637,30 +2631,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual51 - block $default52 - block $case253 - block $case154 - block $case055 + block $__inlined_func$class-overloading/A#b@virtual93 + block $default94 + block $case295 + block $case196 + block $case097 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case055 $case154 $case055 $case055 $case253 $default52 + br_table $case097 $case196 $case097 $case097 $case295 $default94 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual51 + br $__inlined_func$class-overloading/A#b@virtual93 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual51 + br $__inlined_func$class-overloading/A#b@virtual93 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual51 + br $__inlined_func$class-overloading/A#b@virtual93 end i32.const 1488 global.set $class-overloading/which @@ -2692,7 +2686,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2715,8 +2709,8 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/IA#foo@virtual - block $default57 - block $case158 + block $default102 + block $case1103 local.get $0 i32.const 8 i32.sub @@ -2728,8 +2722,8 @@ local.get $0 i32.const 12 i32.eq - br_if $case158 - br $default57 + br_if $case1103 + br $default102 end i32.const 1680 global.set $class-overloading/which @@ -2768,7 +2762,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2790,9 +2784,9 @@ global.get $class-overloading/ic local.tee $0 i32.store - block $__inlined_func$class-overloading/IA#foo@virtual6 - block $default7 - block $case18 + block $__inlined_func$class-overloading/IA#foo@virtual105 + block $default106 + block $case1107 local.get $0 i32.const 8 i32.sub @@ -2804,16 +2798,16 @@ local.get $0 i32.const 12 i32.eq - br_if $case18 - br $default7 + br_if $case1107 + br $default106 end i32.const 1680 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual6 + br $__inlined_func$class-overloading/IA#foo@virtual105 end i32.const 1712 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual6 + br $__inlined_func$class-overloading/IA#foo@virtual105 end unreachable end @@ -2844,7 +2838,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2862,7 +2856,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -2907,7 +2901,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2919,7 +2913,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2937,7 +2931,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 2121160275..eded372932 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -346,8 +346,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -355,11 +353,12 @@ 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 $2 local.get $3 i32.const 4 @@ -367,6 +366,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -378,17 +378,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -594,7 +594,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -602,6 +601,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -617,7 +617,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -625,6 +624,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -679,11 +679,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -707,11 +707,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -871,17 +871,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -941,15 +941,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1077,12 +1077,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1122,13 +1120,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1168,10 +1166,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1180,7 +1178,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1189,6 +1186,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1202,12 +1200,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1220,7 +1218,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1229,6 +1226,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1435,12 +1433,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1456,14 +1454,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1477,14 +1475,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1495,14 +1494,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1510,19 +1508,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1530,17 +1530,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1550,18 +1549,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1569,18 +1566,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1591,8 +1588,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1605,13 +1602,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1624,54 +1621,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1681,37 +1678,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1719,7 +1716,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -1727,58 +1724,57 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $class/GenericInitializer#set:foo (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 - i32.store + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 i32.const 20 i32.sub - local.tee $1 i32.load offset=4 i32.const 3 i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq + select if local.get $1 call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end end end end @@ -1826,7 +1822,10 @@ i32.store local.get $0 i32.const 0 - call $class/GenericInitializer#set:foo + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link local.get $0 i32.const 0 i32.store offset=4 @@ -1847,7 +1846,10 @@ call $~lib/memory/memory.fill local.get $0 local.get $1 - call $class/GenericInitializer#set:foo + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 @@ -1863,7 +1865,10 @@ global.set $~lib/memory/__stack_pointer local.get $2 local.get $0 - call $class/GenericInitializer#set:foo + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 10e7582938..62e050820e 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -246,16 +246,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1488 i32.load i32.gt_u @@ -267,7 +267,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -283,26 +283,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -411,8 +411,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -420,11 +418,12 @@ 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 $2 local.get $3 i32.const 4 @@ -432,6 +431,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -443,17 +443,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -659,7 +659,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -667,6 +666,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -682,7 +682,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -690,6 +689,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -744,11 +744,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -772,11 +772,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -936,17 +936,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1006,15 +1006,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1142,12 +1142,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1187,13 +1185,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1233,10 +1231,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1245,7 +1243,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1254,6 +1251,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1267,12 +1265,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1285,7 +1283,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1294,6 +1291,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1324,12 +1322,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1345,14 +1343,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1366,15 +1364,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1386,13 +1384,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1400,19 +1397,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1420,17 +1419,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1440,18 +1438,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1459,18 +1455,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1481,8 +1477,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1495,13 +1491,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1514,54 +1510,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1571,37 +1567,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1609,20 +1605,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1633,10 +1629,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1653,7 +1649,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1665,38 +1661,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1709,20 +1705,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1745,49 +1741,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $start:constructor (local $0 i32) diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index 80996cf5c6..d99c6cceeb 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (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))) @@ -169,16 +169,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1472 i32.load i32.gt_u @@ -190,7 +190,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1476 @@ -206,26 +206,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -334,8 +334,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -343,11 +341,12 @@ 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 $2 local.get $3 i32.const 4 @@ -355,6 +354,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -366,17 +366,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -582,7 +582,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -590,6 +589,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -605,7 +605,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -613,6 +612,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -667,11 +667,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -695,11 +695,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -859,17 +859,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -929,15 +929,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1065,12 +1065,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1152,353 +1150,119 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $start:do (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-continue|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end + i32.const 10 + local.set $0 + loop $do-continue|0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-continue|0 end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $0 if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz + local.get $2 + i32.const 10 + i32.ne if - i32.const 4 - memory.size - local.tee $0 - i32.const 16 - i32.shl - i32.const 4 + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $do-continue|00 + local.get $0 + local.tee $1 + i32.const 1 i32.sub + local.set $0 local.get $1 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 + br_if $do-continue|00 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + i32.const 10 + local.set $0 + loop $do-continue|01 local.get $0 - local.get $2 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + loop $do-continue|1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-continue|1 + end local.get $0 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s if - local.get $2 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 1056 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz + local.get $2 + i32.const 9 + i32.ne if i32.const 0 - i32.const 1424 - i32.const 496 - i32.const 16 + i32.const 1056 + i32.const 40 + i32.const 5 call $~lib/builtins/abort unreachable end + local.get $0 + br_if $do-continue|01 end local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u if i32.const 0 - i32.const 1424 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $1 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.tee $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - ) - (func $start:do - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 10 - local.set $2 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - br_if $do-continue|0 - end - local.get $2 - if - i32.const 0 - i32.const 1056 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $do-continue|00 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - br_if $do-continue|00 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 10 - local.set $0 - loop $do-continue|01 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - i32.const 1 - i32.add - local.set $3 - loop $do-continue|1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-continue|1 - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - br_if $do-continue|01 - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 42 - i32.const 3 + i32.const 1056 + i32.const 42 + i32.const 3 call $~lib/builtins/abort unreachable end @@ -1730,7 +1494,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1745,26 +1509,26 @@ i32.store local.get $1 call $do/Ref#constructor - local.tee $2 + local.tee $0 i32.store loop $do-continue|06 block $do-break|07 - local.get $0 + local.get $2 i32.const 1 i32.add - local.tee $0 + local.tee $2 i32.const 10 i32.eq if i32.const 0 - local.set $2 + local.set $0 br $do-break|07 end call $do/Ref#constructor br_if $do-continue|06 end end - local.get $0 + local.get $2 i32.const 10 i32.ne if @@ -1775,7 +1539,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 if i32.const 0 i32.const 1056 @@ -1864,6 +1628,10 @@ ) (func $do/Ref#constructor (result i32) (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1880,17 +1648,243 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $4 i32.const 0 i32.store - local.get $0 - call $~lib/rt/itcms/__new + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $0 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $0 + local.get $0 + local.get $1 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $0 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $1 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $1 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $1 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $4 + local.get $0 + i32.const 20 + i32.add + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) ) diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index f6d53b32c4..1178f405c9 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -134,11 +134,11 @@ local.get $0 i32.store offset=8 local.get $0 - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.or i32.store offset=4 ) @@ -352,8 +352,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -361,11 +359,12 @@ 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 $2 local.get $3 i32.const 4 @@ -373,6 +372,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -384,17 +384,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -600,7 +600,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -608,6 +607,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -623,7 +623,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -631,6 +630,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -685,11 +685,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -713,11 +713,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -877,17 +877,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -947,15 +947,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1083,12 +1083,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1128,13 +1126,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1174,10 +1172,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1186,7 +1184,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1195,6 +1192,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1208,12 +1206,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1226,7 +1224,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1235,6 +1232,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1265,12 +1263,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1286,14 +1284,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1307,15 +1305,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1327,13 +1325,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1341,19 +1338,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1361,17 +1360,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1381,18 +1379,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1400,18 +1396,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1422,8 +1418,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1436,13 +1432,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1455,54 +1451,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1512,37 +1508,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1550,20 +1546,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1574,10 +1570,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1594,7 +1590,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1606,38 +1602,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1650,20 +1646,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1686,49 +1682,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/empty-new.optimized.wat b/tests/compiler/empty-new.optimized.wat index f26e0b4178..ca6a7070f4 100644 --- a/tests/compiler/empty-new.optimized.wat +++ b/tests/compiler/empty-new.optimized.wat @@ -165,16 +165,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1440 i32.load i32.gt_u @@ -186,7 +186,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -202,26 +202,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -330,8 +330,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -339,11 +337,12 @@ 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 $2 local.get $3 i32.const 4 @@ -351,6 +350,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -362,17 +362,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -578,7 +578,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -586,6 +585,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -601,7 +601,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -609,6 +608,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -663,11 +663,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -691,11 +691,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -855,17 +855,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -925,15 +925,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1061,12 +1061,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1148,11 +1146,69 @@ end end ) - (func $~lib/rt/itcms/__new + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + ) + (func $~start (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + memory.size + i32.const 16 + i32.shl + i32.const 17852 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1204,20 +1260,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if - i32.const 4 memory.size - local.tee $0 + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $1 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1226,18 +1283,16 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $0 - local.get $2 + local.tee $0 local.get $0 - local.get $2 - i32.gt_s + local.get $1 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $0 memory.grow i32.const 0 i32.lt_s @@ -1245,15 +1300,15 @@ unreachable end end + local.get $2 local.get $1 - local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1280,12 +1335,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $2 + local.tee $1 i32.const -4 i32.and i32.const 28 @@ -1295,7 +1350,7 @@ i32.ge_u if local.get $0 - local.get $2 + local.get $1 i32.const 2 i32.and i32.const 28 @@ -1304,19 +1359,19 @@ local.get $0 i32.const 32 i32.add - local.tee $2 + local.tee $1 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 local.get $2 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $2 + local.get $1 i32.const -2 i32.and i32.store @@ -1347,26 +1402,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 - local.get $1 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1379,65 +1434,4 @@ i32.add global.set $~lib/rt/itcms/total ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 17852 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $~lib/rt/itcms/__new - ) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 6be1e46aed..16332c0eca 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -219,16 +219,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1440 i32.load i32.gt_u @@ -240,7 +240,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -256,26 +256,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -384,8 +384,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -393,11 +391,12 @@ 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 $2 local.get $3 i32.const 4 @@ -405,6 +404,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -416,17 +416,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -632,7 +632,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -640,6 +639,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -655,7 +655,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -663,6 +662,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -717,11 +717,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -745,11 +745,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -909,17 +909,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -979,15 +979,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1115,12 +1115,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1258,20 +1256,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1280,18 +1279,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1299,15 +1296,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1334,12 +1331,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1349,7 +1346,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1358,19 +1355,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1401,26 +1398,26 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1435,34 +1432,34 @@ local.get $1 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $0 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 ) (func $export/mul (param $0 i32) (param $1 i32) (result i32) local.get $0 diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index d9c0ebacf3..389f2644bf 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (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))) @@ -220,16 +220,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1536 i32.load i32.gt_u @@ -241,7 +241,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1540 @@ -257,26 +257,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -385,8 +385,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -394,11 +392,12 @@ 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 $2 local.get $3 i32.const 4 @@ -406,6 +405,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -417,17 +417,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -633,7 +633,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -641,6 +640,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -656,7 +656,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -664,6 +663,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -718,11 +718,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -746,11 +746,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -910,17 +910,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -980,15 +980,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1116,12 +1116,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1203,11 +1201,199 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $export-default/theDefault + nop + ) + (func $export/sub (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + block $__inlined_func$start:exportstar-rereexport + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17956 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:exportstar-rereexport + end + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $exports/Car#constructor (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1259,20 +1445,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if - i32.const 4 memory.size - local.tee $0 + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $1 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1281,18 +1468,16 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $0 - local.get $2 + local.tee $0 local.get $0 - local.get $2 - i32.gt_s + local.get $1 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $0 memory.grow i32.const 0 i32.lt_s @@ -1300,15 +1485,15 @@ unreachable end end + local.get $2 local.get $1 - local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1335,12 +1520,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $2 + local.tee $1 i32.const -4 i32.and i32.const 28 @@ -1350,7 +1535,7 @@ i32.ge_u if local.get $0 - local.get $2 + local.get $1 i32.const 2 i32.and i32.const 28 @@ -1359,19 +1544,19 @@ local.get $0 i32.const 32 i32.add - local.tee $2 + local.tee $1 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 local.get $2 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $2 + local.get $1 i32.const -2 i32.and i32.store @@ -1402,26 +1587,26 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 - local.get $1 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1436,238 +1621,46 @@ local.get $0 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $0 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 - ) - (func $export-default/theDefault - nop - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 + local.get $4 local.get $1 - i32.sub - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - block $__inlined_func$start:exportstar-rereexport - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17956 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - call $exports/Car#constructor - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $exports/Car#constructor - global.set $rereexport/car - global.get $~lib/memory/__stack_pointer - global.get $rereexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $~lib/memory/__stack_pointer - global.get $rereexport/exportsNamespaceCar - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:exportstar-rereexport - end - i32.const 17984 - i32.const 18032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $exports/Car#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - if - i32.const 17984 - i32.const 18032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 + local.get $1 i32.const 2 i32.store - local.get $0 + local.get $1 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) ) diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 7e02830631..ddb37e01f6 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -352,8 +352,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -361,11 +359,12 @@ 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 $2 local.get $3 i32.const 4 @@ -373,6 +372,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -384,17 +384,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -600,7 +600,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -608,6 +607,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -623,7 +623,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -631,6 +630,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -685,11 +685,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1552 @@ -713,11 +713,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1552 @@ -877,17 +877,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -947,15 +947,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1083,12 +1083,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1128,13 +1126,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1174,10 +1172,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1186,7 +1184,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1195,6 +1192,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1208,12 +1206,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1226,7 +1224,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1235,6 +1232,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1441,12 +1439,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1462,14 +1460,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1483,14 +1481,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1501,14 +1500,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1516,19 +1514,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1536,17 +1536,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1556,18 +1555,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1575,18 +1572,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1597,8 +1594,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1611,13 +1608,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1630,54 +1627,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1687,37 +1684,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1725,7 +1722,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -1956,29 +1953,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2000,25 +1995,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2091,25 +2086,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2178,25 +2173,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2236,143 +2231,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2399,63 +2380,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2482,23 +2457,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2877,68 +2850,77 @@ local.get $6 i32.store ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~lib/array/Array~visit (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner2 $folding-inner0 $folding-inner2 $folding-inner1 $folding-inner1 $invalid - end - return - end - return - end - unreachable - end - local.get $0 + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 i32.load - local.tee $0 + local.tee $3 if - local.get $0 + local.get $3 call $~lib/rt/itcms/__visit end - return - end - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 + local.get $0 + call $~lib/array/Array~visit + return end + unreachable end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end return end local.get $0 diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index b502ff0347..fab896cbc3 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -341,8 +341,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -350,11 +348,12 @@ 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 $2 local.get $3 i32.const 4 @@ -362,6 +361,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -373,17 +373,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -589,7 +589,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -597,6 +596,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -612,7 +612,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -620,6 +619,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -674,11 +674,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -702,11 +702,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -866,17 +866,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -936,15 +936,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1072,12 +1072,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1215,20 +1213,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1237,18 +1236,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1256,15 +1253,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1291,12 +1288,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1306,7 +1303,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1315,19 +1312,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1358,26 +1355,26 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1392,87 +1389,86 @@ local.get $1 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $0 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 ) - (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 - i32.store + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 i32.const 20 i32.sub - local.tee $1 i32.load offset=4 i32.const 3 i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq + select if local.get $1 call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end end end end @@ -1480,26 +1476,16 @@ (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid - block $extends-recursive/Child - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $extends-recursive/Child $folding-inner0 $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end unreachable @@ -1600,7 +1586,10 @@ i32.store offset=4 local.get $0 local.get $1 - call $extends-recursive/Parent#set:child + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -1664,7 +1653,10 @@ end local.get $0 i32.const 0 - call $extends-recursive/Parent#set:child + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 157f04d2a6..22b782c7a2 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1,9 +1,10 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (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_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -116,8 +117,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -125,11 +124,12 @@ 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 $2 local.get $3 i32.const 4 @@ -137,6 +137,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -148,17 +149,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -364,7 +365,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -372,6 +372,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -387,7 +388,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -395,6 +395,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -449,11 +450,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1056 @@ -477,11 +478,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1056 @@ -626,13 +627,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -672,10 +673,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -684,7 +685,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -693,6 +693,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -706,12 +707,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -724,7 +725,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -733,6 +733,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -740,11 +741,19 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + local.get $0 i32.const 1073741820 i32.gt_u if @@ -756,14 +765,12 @@ unreachable end local.get $0 - local.tee $2 - local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $0 i32.const 19 i32.add i32.const -16 @@ -776,6 +783,8 @@ local.tee $1 i32.eqz if + memory.size + local.tee $2 local.get $0 i32.const 536870910 i32.lt_u @@ -794,14 +803,13 @@ local.get $0 end i32.const 4 - memory.size - local.tee $1 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -811,18 +819,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -830,15 +836,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -866,12 +872,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $3 + local.set $2 local.get $0 i32.const 4 i32.add @@ -885,7 +891,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const -4 i32.and local.get $0 @@ -896,7 +902,7 @@ if local.get $1 local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.and i32.or @@ -913,12 +919,12 @@ i32.const 1 i32.or i32.store - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -943,6 +949,8 @@ i32.store end local.get $1 + i32.const 4 + i32.add ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) @@ -987,44 +995,26 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock ) (func $~start (local $0 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT i32.const 64 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $0 local.get $0 v128.load offset=16 v128.store offset=32 local.get $0 call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $0 i32.const 42 i32.store8 @@ -1044,16 +1034,8 @@ end local.get $0 call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $0 i32.const 42 i32.store16 @@ -1073,16 +1055,8 @@ end local.get $0 call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $0 i32.const 42 i32.store @@ -1102,16 +1076,8 @@ end local.get $0 call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $0 i64.const 42 i64.store @@ -1131,16 +1097,8 @@ end local.get $0 call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $0 i32.const 42 i32.store @@ -1160,16 +1118,8 @@ end local.get $0 call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $0 i64.const 42 i64.store diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 38af4021b4..acad288279 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -359,8 +359,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -368,11 +366,12 @@ 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 $2 local.get $3 i32.const 4 @@ -380,6 +379,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -391,17 +391,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -607,7 +607,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -615,6 +614,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -630,7 +630,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -638,6 +637,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -692,11 +692,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -720,11 +720,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -884,17 +884,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -954,15 +954,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1090,12 +1090,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1135,13 +1133,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1181,10 +1179,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1193,7 +1191,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1202,6 +1199,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1215,12 +1213,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1233,7 +1231,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1242,6 +1239,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1448,12 +1446,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1469,14 +1467,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1490,14 +1488,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1508,14 +1507,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1523,19 +1521,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1543,17 +1543,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1563,18 +1562,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1582,18 +1579,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1604,8 +1601,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1618,13 +1615,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1637,54 +1634,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1694,37 +1691,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1732,7 +1729,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -1821,7 +1818,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1835,18 +1832,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1854,20 +1848,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1880,33 +1874,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -1958,17 +1952,18 @@ return end local.get $0 - i32.load offset=4 local.tee $1 + i32.load offset=4 + local.tee $0 if - local.get $1 + local.get $0 call $~lib/rt/itcms/__visit end - local.get $0 + local.get $1 i32.load offset=8 - local.tee $0 + local.tee $1 if - local.get $0 + local.get $1 call $~lib/rt/itcms/__visit end return diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index d34636526e..6c0a12536a 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (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))) @@ -169,16 +169,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1472 i32.load i32.gt_u @@ -190,7 +190,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1476 @@ -206,26 +206,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -334,8 +334,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -343,11 +341,12 @@ 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 $2 local.get $3 i32.const 4 @@ -355,6 +354,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -366,17 +366,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -582,7 +582,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -590,6 +589,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -605,7 +605,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -613,6 +612,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -667,11 +667,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -695,11 +695,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -859,17 +859,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -929,15 +929,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1065,12 +1065,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1152,343 +1150,109 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $start:for (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-continue|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 + loop $for-loop|0 + local.get $0 + i32.const 10 + i32.lt_s + if local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl + i32.const 1 i32.add - global.set $~lib/rt/itcms/threshold + local.set $0 + br $for-loop|0 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $0 + i32.const 10 + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1056 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 4 - memory.size - local.tee $0 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $1 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $0 - local.get $2 + i32.const 0 + local.set $0 + loop $for-loop|00 local.get $0 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 + i32.const 10 i32.lt_s if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 end - local.get $1 + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $for-loop|01 local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz + i32.const 0 + i32.gt_s if - i32.const 0 - i32.const 1424 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|01 end end local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u if i32.const 0 - i32.const 1424 - i32.const 498 - i32.const 14 + i32.const 1056 + i32.const 29 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/removeBlock + i32.const 0 + local.set $0 + loop $for-loop|02 + local.get $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|02 + end + end local.get $0 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + i32.const 10 + i32.ne if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $1 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.tee $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - ) - (func $start:for - (local $0 i32) - (local $1 i32) - (local $2 i32) - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $for-loop|01 - local.get $0 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|01 - end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|02 - local.get $0 - i32.const 10 - i32.ne - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|02 - end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $for-loop|03 + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $for-loop|03 local.get $0 i32.const 1 i32.sub @@ -1506,14 +1270,14 @@ end i32.const 0 local.set $0 - loop $for-loop|04 + loop $for-loop|05 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 10 i32.ne - br_if $for-loop|04 + br_if $for-loop|05 end local.get $0 i32.const 10 @@ -1528,7 +1292,7 @@ end i32.const 0 local.set $0 - loop $for-loop|05 + loop $for-loop|07 local.get $0 i32.const 10 i32.lt_s @@ -1537,7 +1301,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|05 + br $for-loop|07 end end local.get $0 @@ -1553,7 +1317,7 @@ end i32.const 0 local.set $0 - loop $for-loop|06 + loop $for-loop|08 local.get $0 i32.const 10 i32.lt_s @@ -1590,7 +1354,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|06 + br $for-loop|08 end end local.get $0 @@ -1677,7 +1441,7 @@ call $for/Ref#constructor local.tee $0 i32.store - loop $for-loop|07 + loop $for-loop|09 local.get $0 if local.get $1 @@ -1695,7 +1459,7 @@ local.tee $0 i32.store end - br $for-loop|07 + br $for-loop|09 end end local.get $1 @@ -1723,7 +1487,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1733,40 +1497,40 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $for/Ref#constructor i32.store global.get $~lib/memory/__stack_pointer call $for/Ref#constructor - local.tee $1 + local.tee $0 i32.store - loop $for-loop|08 + loop $for-loop|06 call $for/Ref#constructor if - block $for-break09 - local.get $0 + block $for-break07 + local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 i32.const 10 i32.eq if i32.const 0 - local.set $1 - br $for-break09 + local.set $0 + br $for-break07 end global.get $~lib/memory/__stack_pointer call $for/Ref#constructor - local.tee $1 + local.tee $0 i32.store - br $for-loop|08 + br $for-loop|06 end end end - local.get $0 + local.get $1 i32.const 10 i32.ne if @@ -1777,7 +1541,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 if i32.const 0 i32.const 1056 @@ -1866,6 +1630,10 @@ ) (func $for/Ref#constructor (result i32) (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1882,17 +1650,243 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $4 i32.const 0 i32.store - local.get $0 - call $~lib/rt/itcms/__new + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $0 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $0 + local.get $0 + local.get $1 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $0 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $1 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $1 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $1 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $4 + local.get $0 + i32.const 20 + i32.add + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) ) diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index f1593b31c0..ca661c44a5 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -4,10 +4,10 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -207,16 +207,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1760 i32.load i32.gt_u @@ -228,7 +228,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1764 @@ -244,26 +244,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -372,8 +372,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -381,11 +379,12 @@ 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 $2 local.get $3 i32.const 4 @@ -393,6 +392,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -404,17 +404,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -620,7 +620,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -628,6 +627,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -643,7 +643,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -651,6 +650,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -705,11 +705,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -733,11 +733,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -897,17 +897,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -967,15 +967,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1103,12 +1103,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1190,240 +1188,6 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-continue|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 4 - memory.size - local.tee $0 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $1 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $1 - local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $1 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.tee $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 6 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - ) (func $function-call/Foo#fnVoid (param $0 i32) nop ) @@ -1468,6 +1232,10 @@ ) (func $~start (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1571,24 +1339,250 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $0 - call $~lib/rt/itcms/__new + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + call $~lib/rt/tlsf/searchBlock local.tee $0 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $0 + local.get $0 + local.get $1 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $0 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $1 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $1 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $1 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 6 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $4 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $4 + local.get $0 + local.get $4 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + local.get $0 + i32.const 20 + i32.add + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 global.set $function-call/foo global.get $~lib/memory/__stack_pointer global.get $function-call/foo - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 1680 i32.load call_indirect $0 (type $i32_=>_none) @@ -1608,9 +1602,9 @@ end global.get $~lib/memory/__stack_pointer global.get $function-call/foo - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 1 i32.const 2 i32.const 1744 diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 54263d7a37..5db5d3f05d 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -405,8 +405,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -414,11 +412,12 @@ 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 $2 local.get $3 i32.const 4 @@ -426,6 +425,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -437,17 +437,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -653,7 +653,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -661,6 +660,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -676,7 +676,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -684,6 +683,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -738,11 +738,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1936 @@ -766,11 +766,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1936 @@ -930,17 +930,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1000,15 +1000,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1136,12 +1136,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1223,268 +1221,6 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-continue|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 4 - memory.size - local.tee $0 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $1 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $1 - local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1936 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1936 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $1 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.tee $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 8 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 4 - i32.add - local.tee $1 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $1 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - ) (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $0 i64) (result i64) local.get $0 ) @@ -1527,7 +1263,7 @@ i32.const 8 i32.sub i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid end return end @@ -1536,25 +1272,408 @@ unreachable end local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end + i32.load offset=4 + call $~lib/rt/itcms/__visit return end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - ) - (func $~start + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start call $start:function-expression ) - (func $start:function-expression + (func $function-expression/testField (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 0 + i32.store offset=8 + local.get $5 + i32.const 2032 + i32.store + local.get $5 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $0 + local.get $0 + local.get $2 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $0 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $2 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.get $2 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 8 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $4 + local.get $0 + local.get $4 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $2 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $2 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.const 2032 + i32.store + local.get $0 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + i32.const 2016 + i32.load + i32.const 3 + i32.and + i32.eq + if + local.get $1 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $0 + i32.const 3 + i32.eq + select + if + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + i32.load + call_indirect $0 (type $none_=>_i32) + local.tee $1 + i32.store offset=8 + i32.const 1 + local.get $1 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:function-expression + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1817,120 +1936,7 @@ i32.store i32.const 1888 global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 2032 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 2032 - i32.store - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - i32.const 2016 - i32.load - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $2 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - i32.const 2012 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $2 - i32.const 3 - i32.eq - select - if - i32.const 2012 - call $~lib/rt/itcms/Object#makeGray - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - i32.load - call_indirect $0 (type $none_=>_i32) - local.tee $0 - i32.store offset=8 - i32.const 1 - local.get $0 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 25 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + call $function-expression/testField call $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index f00688e1bd..4a33cdc28d 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -172,16 +172,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1472 i32.load i32.gt_u @@ -193,7 +193,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1476 @@ -209,26 +209,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -337,8 +337,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -346,11 +344,12 @@ 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 $2 local.get $3 i32.const 4 @@ -358,6 +357,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -369,17 +369,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -585,7 +585,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -593,6 +592,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -608,7 +608,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -616,6 +615,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -670,11 +670,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -698,11 +698,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -862,17 +862,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -932,15 +932,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1068,12 +1068,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1155,240 +1153,6 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-continue|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 4 - memory.size - local.tee $0 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $1 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $1 - local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $1 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.tee $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - ) (func $getter-call/C#get:x~anonymous|0 (result i32) i32.const 42 ) @@ -1464,6 +1228,10 @@ (func $getter-call/test (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1474,10 +1242,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $5 i32.const 0 i32.store - local.get $0 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1486,19 +1254,245 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 - call $~lib/rt/itcms/__new + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $0 + local.get $0 + local.get $1 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $0 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load local.tee $1 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $1 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $1 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $4 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $4 + local.get $0 + local.get $4 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + local.get $0 + i32.const 20 + i32.add + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $1 + local.get $5 + local.get $2 i32.store i32.const 1456 i32.load diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat index 0c41748546..daf2baa022 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -125,8 +125,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -134,11 +132,12 @@ 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 $2 local.get $3 i32.const 4 @@ -146,6 +145,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -157,17 +157,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -373,7 +373,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -381,6 +380,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -396,7 +396,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -404,6 +403,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -458,11 +458,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1056 @@ -486,11 +486,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1056 @@ -662,13 +662,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -708,10 +708,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -720,7 +720,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -729,6 +728,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -742,12 +742,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -760,7 +760,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -769,6 +768,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -805,10 +805,10 @@ i32.ge_u if local.get $1 - local.get $2 local.get $3 i32.const 2 i32.and + local.get $2 i32.or i32.store local.get $2 @@ -841,11 +841,11 @@ i32.const -4 i32.and i32.add - local.get $0 local.get $1 i32.load i32.const -4 i32.and + local.get $0 i32.add i32.load i32.const -3 @@ -864,11 +864,12 @@ local.tee $2 i32.eqz if + memory.size + local.tee $3 local.get $1 i32.const 536870910 i32.lt_u if (result i32) - local.get $1 i32.const 1 i32.const 27 local.get $1 @@ -877,19 +878,19 @@ i32.shl i32.const 1 i32.sub + local.get $1 i32.add else local.get $1 end i32.const 4 - memory.size - local.tee $2 + local.get $0 + i32.load offset=1568 + local.get $3 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -899,18 +900,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $2 - local.get $3 + local.tee $2 local.get $2 local.get $3 - i32.gt_s + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -919,7 +918,7 @@ end end local.get $0 - local.get $2 + local.get $3 i32.const 16 i32.shl memory.size @@ -1168,29 +1167,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -1212,25 +1209,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -1303,25 +1300,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -1390,25 +1387,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -1448,143 +1445,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -1611,63 +1594,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -1694,23 +1671,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2015,13 +1990,13 @@ local.get $1 local.tee $0 call $~lib/rt/tlsf/prepareSize - local.tee $5 + local.tee $1 local.get $2 i32.load - local.tee $6 + local.tee $5 i32.const -4 i32.and - local.tee $7 + local.tee $4 i32.le_u br_if $folding-inner0 local.get $2 @@ -2032,17 +2007,17 @@ i32.const -4 i32.and i32.add - local.tee $1 + local.tee $6 i32.load - local.tee $4 + local.tee $7 i32.const 1 i32.and if - local.get $5 - local.get $7 + local.get $1 + local.get $4 i32.const 4 i32.add - local.get $4 + local.get $7 i32.const -4 i32.and i32.add @@ -2050,11 +2025,11 @@ i32.le_u if local.get $3 - local.get $1 + local.get $6 call $~lib/rt/tlsf/removeBlock local.get $2 local.get $4 - local.get $6 + local.get $5 i32.const 3 i32.and i32.or @@ -2070,7 +2045,7 @@ end local.get $3 local.get $2 - local.get $5 + local.get $1 call $~lib/rt/tlsf/prepareBlock local.get $2 end diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 2ff6ade2b5..6a4d583892 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -347,8 +347,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -356,11 +354,12 @@ 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 $2 local.get $3 i32.const 4 @@ -368,6 +367,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -379,17 +379,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -595,7 +595,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -603,6 +602,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -618,7 +618,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -626,6 +625,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -680,11 +680,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -708,11 +708,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -872,17 +872,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -942,15 +942,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1078,12 +1078,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1221,20 +1219,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1243,18 +1242,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1262,15 +1259,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1297,12 +1294,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1312,7 +1309,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1321,19 +1318,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1364,26 +1361,26 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1398,87 +1395,86 @@ local.get $1 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $0 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 ) - (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 - i32.store + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 i32.const 20 i32.sub - local.tee $1 i32.load offset=4 i32.const 3 i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq + select if local.get $1 call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end end end end @@ -1712,7 +1708,10 @@ i32.store offset=4 local.get $0 local.get $1 - call $implicit-getter-setter/Managed#set:foo + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -1758,7 +1757,10 @@ end local.get $0 local.get $1 - call $implicit-getter-setter/Managed#set:foo + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index 44b29bde0c..307c71492d 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -373,8 +373,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -382,11 +380,12 @@ 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 $2 local.get $3 i32.const 4 @@ -394,6 +393,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -405,17 +405,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -621,7 +621,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -629,6 +628,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -644,7 +644,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -652,6 +651,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -706,11 +706,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -734,11 +734,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -898,17 +898,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -968,15 +968,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1104,12 +1104,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1149,13 +1147,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1195,10 +1193,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1207,7 +1205,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1216,6 +1213,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1229,12 +1227,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1247,7 +1245,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1256,6 +1253,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1286,12 +1284,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1307,14 +1305,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1328,15 +1326,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1348,13 +1346,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1362,19 +1359,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1382,17 +1381,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1402,18 +1400,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1421,18 +1417,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1443,8 +1439,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1457,13 +1453,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1476,54 +1472,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1533,37 +1529,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1571,20 +1567,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1595,10 +1591,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1615,7 +1611,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1627,38 +1623,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1671,20 +1667,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1707,49 +1703,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1914,31 +1910,29 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 i32.sub local.set $2 loop $while-continue|3 @@ -1958,25 +1952,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2049,25 +2043,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2136,25 +2130,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2194,143 +2188,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2357,63 +2337,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2440,23 +2414,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2917,34 +2889,35 @@ return end local.get $0 - i32.load offset=4 local.tee $1 + i32.load offset=4 + local.tee $2 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 - local.get $1 local.get $2 + local.get $3 i32.lt_u if - local.get $1 + local.get $2 i32.load - local.tee $3 + local.tee $0 if - local.get $3 + local.get $0 call $~lib/rt/itcms/__visit end - local.get $1 + local.get $2 i32.const 4 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end - local.get $0 + local.get $1 i32.load call $~lib/rt/itcms/__visit ) diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 0aa5029c5b..b4dcdc6c79 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -3,10 +3,10 @@ (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 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))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -194,16 +194,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1616 i32.load i32.gt_u @@ -215,7 +215,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1620 @@ -231,26 +231,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -359,8 +359,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -368,11 +366,12 @@ 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 $2 local.get $3 i32.const 4 @@ -380,6 +379,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -391,17 +391,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -607,7 +607,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -615,6 +614,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -630,7 +630,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -638,6 +637,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -692,11 +692,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1568 @@ -720,11 +720,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1568 @@ -884,17 +884,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -954,15 +954,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1090,12 +1090,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1177,268 +1175,6 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-continue|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 4 - memory.size - local.tee $0 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $1 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $1 - local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1568 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $1 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.tee $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 5 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 4 - i32.add - local.tee $1 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $1 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - ) (func $infer-generic/test1 (param $0 f32) (result f32) local.get $0 ) @@ -1487,6 +1223,8 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -1509,41 +1247,39 @@ local.get $0 i32.const 1200 i32.store offset=4 - i32.const 0 - local.set $0 i32.const 1164 i32.load local.set $1 loop $for-loop|0 - local.get $0 + local.get $2 local.get $1 i32.const 1164 i32.load - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s select i32.lt_s if local.get $3 i32.const 1156 i32.load - local.get $0 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.get $0 + local.get $2 i32.const 1152 i32.const 1200 i32.load call_indirect $0 (type $i32_f32_i32_i32_=>_i32) local.set $3 - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -1580,7 +1316,7 @@ i32.const 1520 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1589,31 +1325,284 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $3 i32.const 0 i32.store + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $0 + local.get $0 + local.get $1 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $0 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end local.get $0 - call $~lib/rt/itcms/__new + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1568 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $1 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $1 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $1 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 5 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + i32.store8 + local.get $1 + i32.const 4 + i32.add local.tee $0 - i32.store + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 local.get $0 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + local.get $1 + i32.store + local.get $1 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 local.get $1 - local.get $0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store + local.tee $3 local.get $1 + i32.store + local.get $3 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 3efc001b52..3ff34a60d8 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -181,16 +181,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1520 i32.load i32.gt_u @@ -202,7 +202,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1524 @@ -218,26 +218,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -346,8 +346,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -355,11 +353,12 @@ 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 $2 local.get $3 i32.const 4 @@ -367,6 +366,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -378,17 +378,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -594,7 +594,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -602,6 +601,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -617,7 +617,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -625,6 +624,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -679,11 +679,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1472 @@ -707,11 +707,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1472 @@ -871,17 +871,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -941,15 +941,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1077,12 +1077,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1122,13 +1120,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1168,10 +1166,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1180,7 +1178,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1189,6 +1186,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1202,12 +1200,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1220,7 +1218,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1229,6 +1226,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1259,12 +1257,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1280,14 +1278,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1301,15 +1299,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1321,13 +1319,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1335,19 +1332,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1355,17 +1354,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1375,18 +1373,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1394,18 +1390,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1416,8 +1412,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1430,13 +1426,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1449,54 +1445,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1506,37 +1502,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1544,20 +1540,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1568,10 +1564,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1588,7 +1584,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1600,38 +1596,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1644,20 +1640,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1680,49 +1676,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index 0c7aae8a8e..75f85fe4a3 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -183,16 +183,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1504 i32.load i32.gt_u @@ -204,7 +204,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1508 @@ -220,26 +220,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -348,8 +348,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -357,11 +355,12 @@ 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 $2 local.get $3 i32.const 4 @@ -369,6 +368,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -380,17 +380,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -596,7 +596,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -604,6 +603,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -619,7 +619,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -627,6 +626,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -681,11 +681,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -709,11 +709,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -873,17 +873,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -943,15 +943,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1079,12 +1079,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1222,20 +1220,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1244,18 +1243,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1263,15 +1260,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1298,12 +1295,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1313,7 +1310,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1322,19 +1319,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1365,26 +1362,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index d234e0a29b..112260552c 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -341,8 +341,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -350,11 +348,12 @@ 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 $2 local.get $3 i32.const 4 @@ -362,6 +361,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -373,17 +373,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -589,7 +589,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -597,6 +596,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -612,7 +612,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -620,6 +619,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -674,11 +674,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -702,11 +702,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -866,17 +866,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -936,15 +936,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1072,12 +1072,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1159,320 +1157,57 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-continue|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 i32.eqz if - i32.const 4 - memory.size - local.tee $0 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $1 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $1 - local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + return end local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 498 + i32.const 1120 + i32.const 294 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $1 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.tee $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 4 - i32.add - local.tee $1 - i32.const 1 i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $1 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $1 + local.tee $1 + i32.load offset=4 i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - ) - (func $issues/1095/Foo#set:bar (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $1 + i32.and + i32.eq if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 i32.const 20 i32.sub - local.tee $1 i32.load offset=4 i32.const 3 i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq + select if local.get $1 call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end end end end @@ -1505,6 +1240,9 @@ (func $~start (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1563,12 +1301,268 @@ i32.const 0 i32.store local.get $0 - call $~lib/rt/itcms/__new + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $0 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.get $2 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $2 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $2 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.store + local.get $0 + i32.const 1456 i32.store local.get $0 i32.const 1456 - call $issues/1095/Foo#set:bar + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1606,7 +1600,10 @@ end local.get $0 local.get $1 - call $issues/1095/Foo#set:bar + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index 44a877c3be..e26fed4218 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -178,16 +178,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1488 i32.load i32.gt_u @@ -199,7 +199,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -215,26 +215,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -343,8 +343,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -352,11 +350,12 @@ 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 $2 local.get $3 i32.const 4 @@ -364,6 +363,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -375,17 +375,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -591,7 +591,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -599,6 +598,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -614,7 +614,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -622,6 +621,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -676,11 +676,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -704,11 +704,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -868,17 +868,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -938,15 +938,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1074,12 +1074,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1172,12 +1170,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $0 + local.set $1 loop $do-continue|0 - local.get $0 + local.get $1 call $~lib/rt/itcms/step i32.sub - local.set $0 + local.set $1 global.get $~lib/rt/itcms/state i32.eqz if @@ -1193,7 +1191,7 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $0 + local.get $1 i32.const 0 i32.gt_s br_if $do-continue|0 @@ -1217,20 +1215,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $1 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if - i32.const 4 memory.size - local.tee $0 + local.tee $2 + i32.const 4 + local.get $1 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1239,18 +1238,16 @@ i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $0 - local.get $1 + local.tee $0 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $0 memory.grow i32.const 0 i32.lt_s @@ -1258,15 +1255,15 @@ unreachable end end + local.get $1 local.get $2 - local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $1 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1293,12 +1290,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1308,7 +1305,7 @@ i32.ge_u if local.get $0 - local.get $1 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1317,19 +1314,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 + local.tee $2 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $1 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $2 i32.const -2 i32.and i32.store @@ -1360,26 +1357,26 @@ i32.const 12 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 - local.set $2 + local.set $3 local.get $0 - local.get $1 + local.get $2 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $3 i32.store offset=8 - local.get $2 + local.get $3 local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1394,10 +1391,10 @@ local.get $0 i32.const 20 i32.add - local.tee $2 + local.tee $3 i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 12 i32.add local.tee $0 @@ -1405,10 +1402,10 @@ i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $3 i32.const 0 i32.store8 offset=2 local.get $0 @@ -1421,7 +1418,7 @@ i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 0 i32.store8 offset=3 local.get $0 @@ -1429,130 +1426,130 @@ i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 0 - local.get $2 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $1 - i32.add local.tee $0 + i32.add + local.tee $1 i32.const 0 i32.store i32.const 12 - local.get $1 + local.get $0 i32.sub i32.const -4 i32.and - local.tee $3 - local.get $0 + local.tee $2 + local.get $1 i32.add - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store block $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $issues/1225/normal (result i32) global.get $issues/1225/x diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index cf0925a192..ec08ef7d19 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) @@ -348,8 +348,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -357,11 +355,12 @@ 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 $2 local.get $3 i32.const 4 @@ -369,6 +368,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -380,17 +380,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -596,7 +596,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -604,6 +603,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -619,7 +619,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -627,6 +626,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -681,11 +681,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1488 @@ -709,11 +709,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1488 @@ -873,17 +873,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -943,15 +943,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1079,12 +1079,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1124,13 +1122,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1170,10 +1168,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1182,7 +1180,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1191,6 +1188,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1204,12 +1202,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1222,7 +1220,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1231,6 +1228,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1437,12 +1435,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1458,14 +1456,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1479,14 +1477,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1497,14 +1496,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1512,19 +1510,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1532,17 +1532,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1552,18 +1551,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1571,18 +1568,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1593,8 +1590,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1607,13 +1604,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1626,54 +1623,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1683,37 +1680,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1721,7 +1718,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -1952,29 +1949,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -1996,25 +1991,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2087,25 +2082,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2174,25 +2169,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2232,143 +2227,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2395,63 +2376,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2478,23 +2453,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2575,7 +2548,7 @@ local.get $1 i32.const 1 i32.add - local.tee $8 + local.tee $9 local.tee $5 local.get $0 i32.load offset=8 @@ -2595,21 +2568,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load - local.tee $10 - local.set $3 block $__inlined_func$~lib/rt/itcms/__renew local.get $11 i32.const 1 i32.shl - local.tee $6 + local.tee $3 i32.const 1073741820 - local.get $6 + local.get $3 i32.const 1073741820 i32.lt_u select - local.tee $4 + local.tee $6 local.get $5 i32.const 8 local.get $5 @@ -2618,17 +2587,20 @@ select i32.const 2 i32.shl - local.tee $6 - local.get $4 + local.tee $3 + local.get $3 local.get $6 - i32.gt_u + i32.lt_u select - local.tee $9 - local.tee $5 - local.get $10 + local.tee $10 + local.tee $4 + local.get $0 + i32.load + local.tee $8 + local.tee $3 i32.const 20 i32.sub - local.tee $4 + local.tee $5 i32.load i32.const -4 i32.and @@ -2636,24 +2608,24 @@ i32.sub i32.le_u if - local.get $4 local.get $5 + local.get $4 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $5 local.get $4 + local.get $5 i32.load offset=12 call $~lib/rt/itcms/__new local.tee $7 local.set $6 - local.get $5 local.get $4 + local.get $5 i32.load offset=16 - local.tee $4 + local.tee $5 local.get $4 local.get $5 - i32.gt_u + i32.lt_u select local.set $12 block $~lib/util/memory/memmove|inlined.0 @@ -2704,17 +2676,17 @@ i32.sub local.set $12 local.get $6 - local.tee $5 + local.tee $4 i32.const 1 i32.add local.set $6 local.get $3 - local.tee $4 + local.tee $5 i32.const 1 i32.add local.set $3 - local.get $5 local.get $4 + local.get $5 i32.load8_u i32.store8 br $while-continue|0 @@ -2749,17 +2721,17 @@ local.get $12 if local.get $6 - local.tee $5 + local.tee $4 i32.const 1 i32.add local.set $6 local.get $3 - local.tee $4 + local.tee $5 i32.const 1 i32.add local.set $3 - local.get $5 local.get $4 + local.get $5 i32.load8_u i32.store8 local.get $12 @@ -2847,12 +2819,12 @@ local.get $3 local.get $11 i32.add - local.get $9 + local.get $10 local.get $11 i32.sub call $~lib/memory/memory.fill local.get $3 - local.get $10 + local.get $8 i32.ne if local.get $0 @@ -2867,11 +2839,11 @@ call $~lib/rt/itcms/__link end local.get $0 - local.get $9 + local.get $10 i32.store offset=8 end local.get $0 - local.get $8 + local.get $9 i32.store offset=12 end local.get $0 @@ -2887,73 +2859,7 @@ i32.const 1 call $~lib/rt/itcms/__link ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $invalid - block $~lib/array/Array - block $issues/1699/MultiAssignmentTest - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - return - end - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start + (func $start:issues/1699 (local $0 i32) (local $1 i32) (local $2 i32) @@ -3162,6 +3068,76 @@ call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $invalid + block $~lib/array/Array + block $issues/1699/MultiAssignmentTest + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + local.get $0 + local.tee $1 + i32.load offset=4 + local.tee $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $1 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + call $start:issues/1699 + ) (func $issues/1699/MultiAssignmentTest#constructor (result i32) (local $0 i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index 281aaf02b4..7a59cfe8ca 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (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))) @@ -169,16 +169,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1488 i32.load i32.gt_u @@ -190,7 +190,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -206,26 +206,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -334,8 +334,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -343,11 +341,12 @@ 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 $2 local.get $3 i32.const 4 @@ -355,6 +354,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -366,17 +366,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -582,7 +582,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -590,6 +589,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -605,7 +605,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -613,6 +612,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -667,11 +667,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -695,11 +695,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -859,17 +859,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -929,15 +929,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1065,12 +1065,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1152,11 +1150,182 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $logical/Obj + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17908 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $logical/Obj#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $logical/Obj#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17908 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $logical/Obj#constructor (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1208,20 +1377,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if - i32.const 4 memory.size - local.tee $0 + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $1 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1230,18 +1400,16 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $0 - local.get $2 + local.tee $0 local.get $0 - local.get $2 - i32.gt_s + local.get $1 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $0 memory.grow i32.const 0 i32.lt_s @@ -1249,15 +1417,15 @@ unreachable end end + local.get $2 local.get $1 - local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1284,12 +1452,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $2 + local.tee $1 i32.const -4 i32.and i32.const 28 @@ -1299,7 +1467,7 @@ i32.ge_u if local.get $0 - local.get $2 + local.get $1 i32.const 2 i32.and i32.const 28 @@ -1308,19 +1476,19 @@ local.get $0 i32.const 32 i32.add - local.tee $2 + local.tee $1 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 local.get $2 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $2 + local.get $1 i32.const -2 i32.and i32.store @@ -1351,26 +1519,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 - local.get $1 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1382,190 +1550,16 @@ i32.add i32.add global.set $~lib/rt/itcms/total + local.get $4 local.get $0 i32.const 20 i32.add - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $logical/Obj - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17908 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - call $logical/Obj#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $logical/Obj#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17908 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $logical/Obj#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) ) diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index 91ceb5712c..d2e41d0b4f 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -31,10 +31,11 @@ i32.const 1 i32.eq local.set $1 - loop $while-continue|0 + loop $while-continue|0 (result i32) local.get $1 - i32.eqz - if + if (result i32) + i32.const 1 + else local.get $0 i32.const 2 i32.ne @@ -47,7 +48,6 @@ unreachable end end - i32.const 1 ) (func $loop-flow/forAny (param $0 i32) (result i32) (local $1 i32) @@ -55,10 +55,11 @@ i32.const 1 i32.eq local.set $1 - loop $for-loop|0 + loop $for-loop|0 (result i32) local.get $1 - i32.eqz - if + if (result i32) + i32.const 1 + else local.get $0 i32.const 2 i32.eq @@ -73,7 +74,6 @@ br $for-loop|0 end end - i32.const 1 ) (func $loop-flow/doAny (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 4aa2a78181..65555741cf 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -173,16 +173,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1632 i32.load i32.gt_u @@ -194,7 +194,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1636 @@ -210,26 +210,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -338,8 +338,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -347,11 +345,12 @@ 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 $2 local.get $3 i32.const 4 @@ -359,6 +358,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -370,17 +370,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -586,7 +586,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -594,6 +593,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -609,7 +609,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -617,6 +616,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -671,11 +671,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -699,11 +699,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -863,17 +863,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -933,15 +933,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1069,12 +1069,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1212,20 +1210,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1234,18 +1233,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1253,15 +1250,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1288,12 +1285,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1303,7 +1300,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1312,19 +1309,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1355,26 +1352,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index 36b4eb652f..529a532405 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -177,29 +177,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -221,25 +219,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -312,25 +310,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -399,25 +397,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -457,143 +455,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -620,63 +604,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -703,23 +681,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index 094e13b17d..6a8834cfd7 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -12,199 +12,209 @@ (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) - block $folding-inner0 - local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store8 offset=3 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - br_if $folding-inner0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $0 - local.get $1 - i32.const 255 - i32.and - i32.const 16843009 - i32.mul - local.tee $1 - i32.store - local.get $0 - local.get $2 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 8 - i32.le_u - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.const 12 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 8 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 24 - i32.le_u - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=16 - local.get $0 - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - i32.store offset=24 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.const 28 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 24 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 20 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 16 - i32.sub - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $0 + local.get $2 + i32.eqz + if + return + end + local.get $0 + local.get $1 + i32.store8 + local.get $0 + local.get $2 + i32.add + i32.const 1 + i32.sub + local.get $1 + i32.store8 + local.get $2 + i32.const 2 + i32.le_u + if + return + end + local.get $0 + local.get $1 + i32.store8 offset=1 + local.get $0 + local.get $1 + i32.store8 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.const 2 + i32.sub + local.get $1 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + local.get $1 + i32.store8 + local.get $2 + i32.const 6 + i32.le_u + if + return + end + local.get $0 + local.get $1 + i32.store8 offset=3 + local.get $0 + local.get $2 + i32.add + i32.const 4 + i32.sub + local.get $1 + i32.store8 + local.get $2 + i32.const 8 + i32.le_u + if + return + end + local.get $0 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $0 + local.get $1 + i32.const 255 + i32.and + i32.const 16843009 + i32.mul + local.tee $1 + i32.store + local.get $0 + local.get $2 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $2 + i32.add + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 8 + i32.le_u + if + return + end + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.const 12 + i32.sub + local.get $1 + i32.store + local.get $3 + i32.const 8 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 24 + i32.le_u + if + return + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + i32.store offset=24 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.const 28 + i32.sub + local.get $1 + i32.store + local.get $3 + i32.const 24 + i32.sub + local.get $1 + i32.store + local.get $3 + i32.const 20 + i32.sub + local.get $1 + i32.store + local.get $3 + i32.const 16 + i32.sub + local.get $1 + i32.store + local.get $0 + local.get $0 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.sub + local.set $2 + local.get $1 + i64.extend_i32_u + local.tee $4 + local.get $4 + i64.const 32 + i64.shl + i64.or + local.set $4 + loop $while-continue|0 local.get $2 - local.get $3 - i32.sub - local.set $2 - local.get $1 - i64.extend_i32_u - local.tee $4 - local.get $4 - i64.const 32 - i64.shl - i64.or - local.set $4 - loop $while-continue|0 + i32.const 32 + i32.ge_u + if + local.get $0 + local.get $4 + i64.store + local.get $0 + local.get $4 + i64.store offset=8 + local.get $0 + local.get $4 + i64.store offset=16 + local.get $0 + local.get $4 + i64.store offset=24 local.get $2 i32.const 32 - i32.ge_u - if - local.get $0 - local.get $4 - i64.store - local.get $0 - local.get $4 - i64.store offset=8 - local.get $0 - local.get $4 - i64.store offset=16 - local.get $0 - local.get $4 - i64.store offset=24 - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end + i32.sub + local.set $2 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $while-continue|0 end end ) diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index ec7fb0c94a..35bcb32338 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -209,16 +209,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1440 i32.load i32.gt_u @@ -230,7 +230,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -246,26 +246,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -374,8 +374,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -383,11 +381,12 @@ 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 $2 local.get $3 i32.const 4 @@ -395,6 +394,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -406,17 +406,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -622,7 +622,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -630,6 +629,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -645,7 +645,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -653,6 +652,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -707,11 +707,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -735,11 +735,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -899,17 +899,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -969,15 +969,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1105,12 +1105,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1248,20 +1246,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1270,18 +1269,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1289,15 +1286,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1324,12 +1321,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1339,7 +1336,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1348,19 +1345,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1391,26 +1388,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 7689283fff..96e294fad6 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -7,7 +7,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) + (type $i64_i64_i32_i64_=>_i32 (func (param i64 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $number/a (mut i32) (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -216,16 +216,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 4656 i32.load i32.gt_u @@ -237,7 +237,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 4660 @@ -253,26 +253,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -381,8 +381,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -390,11 +388,12 @@ 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 $2 local.get $3 i32.const 4 @@ -402,6 +401,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -413,17 +413,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -629,7 +629,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -637,6 +636,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -652,7 +652,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -660,6 +659,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -714,11 +714,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -742,11 +742,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -906,17 +906,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -976,15 +976,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1112,12 +1112,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1157,13 +1155,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1203,10 +1201,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1215,7 +1213,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1224,6 +1221,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1237,12 +1235,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1255,7 +1253,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1264,6 +1261,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1321,8 +1319,8 @@ br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1336,15 +1334,15 @@ local.get $0 i32.const 16 i32.add - local.set $1 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 - local.get $1 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1355,14 +1353,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $1 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1370,19 +1367,21 @@ i32.const 4 i32.sub end - local.tee $1 - call $~lib/rt/tlsf/searchBlock local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $3 i32.eqz if - local.get $1 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1 i32.const 27 - local.get $1 + local.get $2 i32.clz i32.sub i32.shl @@ -1390,17 +1389,16 @@ i32.sub i32.add else - local.get $1 + local.get $2 end i32.const 4 - memory.size - local.tee $3 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $5 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1410,18 +1408,16 @@ i32.and i32.const 16 i32.shr_u - local.set $4 - local.get $3 - local.get $4 + local.tee $3 local.get $3 local.get $4 - i32.gt_s + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1430,7 +1426,7 @@ end end local.get $5 - local.get $3 + local.get $4 i32.const 16 i32.shl memory.size @@ -1438,9 +1434,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $3 i32.eqz if i32.const 0 @@ -1451,8 +1447,8 @@ unreachable end end - local.get $1 local.get $2 + local.get $3 i32.load i32.const -4 i32.and @@ -1466,12 +1462,12 @@ unreachable end local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 i32.load - local.set $3 - local.get $1 + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1484,54 +1480,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const -4 i32.and - local.get $1 + local.get $2 i32.sub - local.tee $4 + local.tee $1 i32.const 16 i32.ge_u if - local.get $2 - local.get $1 local.get $3 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store - local.get $1 local.get $2 + local.get $3 i32.const 4 i32.add i32.add - local.tee $1 - local.get $4 + local.tee $2 + local.get $1 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $1 + local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $2 local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.tee $1 - local.get $2 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add - local.get $1 local.get $2 + local.get $3 i32.load i32.const -4 i32.and @@ -1541,37 +1537,37 @@ i32.and i32.store end - local.get $2 + local.get $3 i32.const 1 i32.store offset=12 - local.get $2 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 - local.set $5 + local.set $1 + local.get $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $2 - local.get $5 + local.get $3 + local.get $1 i32.store offset=8 - local.get $5 - local.get $2 - local.get $5 + local.get $1 + local.get $3 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $2 + local.get $3 i32.load i32.const -4 i32.and @@ -1579,22 +1575,22 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 + local.get $3 i32.const 20 i32.add - local.tee $5 - local.set $4 + local.tee $3 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1603,18 +1599,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $4 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 @@ -1623,10 +1619,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1635,38 +1631,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 - local.get $4 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 - local.get $0 local.get $1 + local.get $0 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $4 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $1 i32.const 0 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.store offset=8 local.get $0 @@ -1679,20 +1675,20 @@ i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $1 i32.const 0 i32.store offset=12 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 0 i32.store offset=20 - local.get $3 + local.get $1 i32.const 0 i32.store offset=24 local.get $0 @@ -1715,49 +1711,49 @@ i32.sub i32.const 0 i32.store - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $4 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $5 + local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1774,13 +1770,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -1809,13 +1805,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -1835,12 +1831,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -1850,12 +1846,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -1863,6 +1859,122 @@ i32.store16 end ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4684 + i32.lt_s + if + i32.const 21088 + i32.const 21136 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1889,7 +2001,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1903,18 +2015,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1922,20 +2031,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1948,33 +2057,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -1982,88 +2091,90 @@ end i32.eqz ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (result i32) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) + (local $4 i32) (local $5 i32) (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) + (local $8 i32) + (local $9 i64) + (local $10 i32) (local $11 i64) - local.get $2 + (local $12 i64) + local.get $1 local.get $0 i64.sub - local.set $8 - local.get $2 + local.set $9 + local.get $1 i64.const 1 i32.const 0 - local.get $3 + local.get $2 i32.sub - local.tee $9 + local.tee $10 i64.extend_i32_s local.tee $0 i64.shl - local.tee $10 + local.tee $11 i64.const 1 i64.sub - local.tee $11 + local.tee $12 i64.and local.set $6 - local.get $2 + local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $1 - local.set $3 - local.get $1 + local.tee $2 + local.set $5 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $5 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $5 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $5 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $5 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $5 i32.const 100000000 i32.ge_u i32.add end end - local.set $7 + local.set $8 loop $while-continue|0 - local.get $7 + local.get $8 i32.const 0 i32.gt_s if @@ -2079,240 +2190,246 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $7 + local.get $8 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $1 + local.get $2 i32.const 1000000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 - local.set $3 + local.get $2 + local.set $5 i32.const 0 - local.set $1 + local.set $2 br $break|1 end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $4 local.get $5 i32.or if - local.get $5 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 i32.const 1 i32.shl i32.const 3456 i32.add - local.get $3 + local.get $5 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 + local.set $8 local.get $6 - local.get $1 + local.get $2 i64.extend_i32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $0 - local.get $4 + local.get $3 i64.le_u if - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 + local.get $8 i32.const 2 i32.shl i32.const 4384 i32.add i64.load32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 3454 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|3 - local.get $2 - local.get $4 + local.get $1 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $8 + local.get $9 i64.lt_u select if (result i32) i32.const 1 - local.get $8 + local.get $9 local.get $0 i64.sub local.get $0 - local.get $2 + local.get $1 i64.add local.tee $6 - local.get $8 + local.get $9 i64.sub i64.gt_u local.get $6 - local.get $8 + local.get $9 i64.lt_u select else i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $2 + local.get $1 i64.add local.set $0 br $while-continue|3 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 return end br $while-continue|0 end end - local.get $9 + local.get $10 i64.extend_i32_s local.set $0 loop $while-continue|4 - local.get $4 + local.get $3 i64.const 10 i64.mul - local.set $4 + local.set $3 local.get $6 i64.const 10 i64.mul - local.tee $2 + local.tee $1 local.get $0 i64.shr_u local.tee $6 - local.get $5 + local.get $4 i64.extend_i32_s i64.or i64.const 0 i64.ne if - local.get $5 + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + local.get $2 i32.const 1 i32.shl i32.const 3456 @@ -2324,32 +2441,28 @@ i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 - local.get $4 - local.get $2 - local.get $11 + local.set $8 + local.get $3 + local.get $1 + local.get $12 i64.and local.tee $6 i64.le_u br_if $while-continue|4 end - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $6 local.set $0 - local.get $8 + local.get $9 i32.const 0 - local.get $7 + local.get $8 i32.sub i32.const 2 i32.shl @@ -2357,39 +2470,39 @@ i32.add i64.load32_u i64.mul - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 3454 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|6 - local.get $10 - local.get $4 + local.get $11 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $2 + local.get $1 i64.lt_u select if (result i32) i32.const 1 - local.get $2 + local.get $1 local.get $0 i64.sub local.get $0 - local.get $10 + local.get $11 i64.add local.tee $6 - local.get $2 + local.get $1 i64.sub i64.gt_u - local.get $2 + local.get $1 local.get $6 i64.gt_u select @@ -2397,21 +2510,21 @@ i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $10 + local.get $11 i64.add local.set $0 br $while-continue|6 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2576,29 +2689,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2620,25 +2731,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2711,25 +2822,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2798,25 +2909,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2856,143 +2967,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3019,63 +3116,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 @@ -3102,23 +3193,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3513,67 +3602,67 @@ local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s local.tee $3 if i32.const 0 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 end - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.set $0 + local.set $1 i32.const 3460 - local.get $1 local.get $0 + local.get $1 i32.const 1 i32.add local.tee $0 @@ -3729,7 +3818,7 @@ (local $3 i64) (local $4 i64) (local $5 i64) - (local $6 f64) + (local $6 i64) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3775,7 +3864,7 @@ i32.const 1568 global.set $~lib/rt/itcms/fromSpace global.get $number/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -3816,33 +3905,34 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $5 - i64.const 4294967295 - i64.and - local.set $3 - local.get $5 + local.tee $2 i64.const 32 i64.shr_u - local.tee $5 + local.tee $4 i64.const 31 i64.shl - local.get $3 + local.tee $6 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $2 i64.const 31 i64.shl - local.get $3 + local.tee $5 + local.get $2 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $3 i64.const 32 i64.shr_u i64.add - local.get $4 + local.get $3 i64.const 4294967295 i64.and - local.get $5 + local.get $4 i64.const 10 i64.shl i64.add @@ -3853,18 +3943,13 @@ i64.add i64.const 1 i64.sub - local.set $2 + local.set $3 + local.get $6 local.get $5 - i64.const 31 - i64.shl - local.get $3 - i64.const 31 - i64.shl - local.tee $4 i64.const 32 i64.shr_u i64.add - local.get $4 + local.get $5 i64.const 4294967295 i64.and i64.const 2147483647 @@ -3872,22 +3957,18 @@ i64.const 32 i64.shr_u i64.add + local.get $3 global.get $~lib/util/number/_exp_pow - local.tee $1 i32.const 2 i32.add - local.get $2 - local.get $1 - i32.const 2 - i32.add - local.get $2 - local.get $5 + local.get $3 + local.get $4 i64.const 2147483647 i64.mul - local.get $3 + local.get $2 i64.const 2147483647 i64.mul - local.get $3 + local.get $2 i64.const 4294966784 i64.mul i64.const 32 @@ -3897,7 +3978,7 @@ i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $4 i64.const 4294966784 i64.mul local.get $2 @@ -3915,12 +3996,11 @@ call $~lib/util/number/genDigits global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.const 1 i32.shl - local.tee $1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -3952,7 +4032,7 @@ unreachable end i32.const 3 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -3974,7 +4054,7 @@ unreachable end i32.const -5 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -3996,7 +4076,7 @@ unreachable end i32.const 4 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4022,7 +4102,7 @@ i32.add global.set $number/a global.get $number/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4048,7 +4128,7 @@ i32.sub global.set $number/a global.get $number/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4113,7 +4193,7 @@ i32.add global.set $number/a local.get $0 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4140,7 +4220,7 @@ i32.sub global.set $number/a local.get $0 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4174,117 +4254,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4684 - i32.lt_s - if - i32.const 21088 - i32.const 21136 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - select - local.tee $2 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 48e60473ad..9178d47e75 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1,11 +1,12 @@ (module (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) @@ -405,8 +406,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -414,11 +413,12 @@ 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 $2 local.get $3 i32.const 4 @@ -426,6 +426,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -437,17 +438,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -653,7 +654,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -661,6 +661,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -676,7 +677,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -684,6 +684,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -738,11 +739,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -766,11 +767,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -943,12 +944,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -982,17 +981,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1052,15 +1051,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1186,13 +1185,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1232,10 +1231,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1244,7 +1243,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1253,6 +1251,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1266,12 +1265,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1284,7 +1283,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1293,6 +1291,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1300,11 +1299,19 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + local.get $0 i32.const 1073741820 i32.gt_u if @@ -1316,14 +1323,12 @@ unreachable end local.get $0 - local.tee $2 - local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $0 i32.const 19 i32.add i32.const -16 @@ -1336,6 +1341,8 @@ local.tee $1 i32.eqz if + memory.size + local.tee $2 local.get $0 i32.const 536870910 i32.lt_u @@ -1354,14 +1361,13 @@ local.get $0 end i32.const 4 - memory.size - local.tee $1 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1371,18 +1377,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1390,15 +1394,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -1426,12 +1430,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $3 + local.set $2 local.get $0 i32.const 4 i32.add @@ -1445,7 +1449,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const -4 i32.and local.get $0 @@ -1456,7 +1460,7 @@ if local.get $1 local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.and i32.or @@ -1473,12 +1477,12 @@ i32.const 1 i32.or i32.store - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1503,6 +1507,8 @@ i32.store end local.get $1 + i32.const 4 + i32.add ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1566,15 +1572,9 @@ local.get $0 i32.const 16 i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub local.tee $2 local.get $1 i32.store offset=12 @@ -1755,38 +1755,38 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 + local.set $1 local.get $2 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end @@ -1819,7 +1819,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1833,18 +1833,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1852,20 +1849,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1878,33 +1875,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -2075,29 +2072,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2119,25 +2114,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2210,25 +2205,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2297,25 +2292,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2355,143 +2350,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2518,63 +2499,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2601,23 +2576,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2787,13 +2760,13 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 i32.const 1156 @@ -2828,7 +2801,7 @@ i32.store i32.const 1392 global.set $~lib/rt/itcms/fromSpace - local.get $0 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2837,45 +2810,45 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 - local.get $2 i32.store offset=4 - local.get $2 + local.get $0 i32.const 123 i32.store - local.get $2 + local.get $0 i32.const 1056 i32.store offset=4 - local.get $2 + local.get $0 i32.const 1056 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -2886,7 +2859,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $2 + local.get $0 i32.load i32.const 123 i32.ne @@ -2900,7 +2873,7 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $2 + local.get $0 i32.load offset=4 local.tee $0 i32.store @@ -2923,16 +2896,8 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT i32.const 8 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $6 i32.const 0 i32.store @@ -3961,23 +3926,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|00 + loop $while-continue|08 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|00 + br $while-continue|08 end end end call $~lib/rt/itcms/step drop - loop $while-continue|11 + loop $while-continue|19 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|11 + br $while-continue|19 end end global.get $~lib/rt/itcms/total diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 215d715993..f7431d648f 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -181,16 +181,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1440 i32.load i32.gt_u @@ -202,7 +202,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -218,26 +218,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -346,8 +346,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -355,11 +353,12 @@ 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 $2 local.get $3 i32.const 4 @@ -367,6 +366,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -378,17 +378,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -594,7 +594,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -602,6 +601,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -617,7 +617,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -625,6 +624,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -679,11 +679,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -707,11 +707,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -871,17 +871,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -941,15 +941,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1077,12 +1077,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1220,20 +1218,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1242,18 +1241,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1261,15 +1258,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1296,12 +1293,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1311,7 +1308,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1320,19 +1317,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1363,26 +1360,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index d6cf608c9e..1882267e40 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -258,16 +258,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1488 i32.load i32.gt_u @@ -279,7 +279,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -295,26 +295,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -423,8 +423,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -432,11 +430,12 @@ 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 $2 local.get $3 i32.const 4 @@ -444,6 +443,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -455,17 +455,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -671,7 +671,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -679,6 +678,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -694,7 +694,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -702,6 +701,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -756,11 +756,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -784,11 +784,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -948,17 +948,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1018,15 +1018,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1154,12 +1154,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1297,20 +1295,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1319,18 +1318,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1338,15 +1335,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1373,12 +1370,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1388,7 +1385,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1397,19 +1394,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1440,26 +1437,26 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1474,34 +1471,34 @@ local.get $1 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $0 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 211ab5d6e7..bb01c66df4 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (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))) @@ -220,16 +220,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1536 i32.load i32.gt_u @@ -241,7 +241,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1540 @@ -257,26 +257,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -385,8 +385,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -394,11 +392,12 @@ 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 $2 local.get $3 i32.const 4 @@ -406,6 +405,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -417,17 +417,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -633,7 +633,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -641,6 +640,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -656,7 +656,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -664,6 +663,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -718,11 +718,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -746,11 +746,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -910,17 +910,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -980,15 +980,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1116,12 +1116,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1203,11 +1201,197 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $export-default/theDefault + nop + ) + (func $export/sub (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17956 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $exports/Car#constructor (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1259,20 +1443,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if - i32.const 4 memory.size - local.tee $0 + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $1 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1281,18 +1466,16 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $0 - local.get $2 + local.tee $0 local.get $0 - local.get $2 - i32.gt_s + local.get $1 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $0 memory.grow i32.const 0 i32.lt_s @@ -1300,15 +1483,15 @@ unreachable end end + local.get $2 local.get $1 - local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1335,12 +1518,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $2 + local.tee $1 i32.const -4 i32.and i32.const 28 @@ -1350,7 +1533,7 @@ i32.ge_u if local.get $0 - local.get $2 + local.get $1 i32.const 2 i32.and i32.const 28 @@ -1359,19 +1542,19 @@ local.get $0 i32.const 32 i32.add - local.tee $2 + local.tee $1 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 local.get $2 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $2 + local.get $1 i32.const -2 i32.and i32.store @@ -1402,26 +1585,26 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 - local.get $1 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1436,236 +1619,46 @@ local.get $0 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $0 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 - ) - (func $export-default/theDefault - nop - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 + local.get $4 local.get $1 - i32.sub - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17956 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - call $exports/Car#constructor - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $exports/Car#constructor - global.set $rereexport/car - global.get $~lib/memory/__stack_pointer - global.get $rereexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $~lib/memory/__stack_pointer - global.get $rereexport/exportsNamespaceCar - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 17984 - i32.const 18032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $exports/Car#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - if - i32.const 17984 - i32.const 18032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 + local.get $1 i32.const 2 i32.store - local.get $0 + local.get $1 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) ) diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index ba05a7f433..f3143731ad 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -359,8 +359,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -368,11 +366,12 @@ 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 $2 local.get $3 i32.const 4 @@ -380,6 +379,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -391,17 +391,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -607,7 +607,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -615,6 +614,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -630,7 +630,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -638,6 +637,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -692,11 +692,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -720,11 +720,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -884,17 +884,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -954,15 +954,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1090,12 +1090,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1135,13 +1133,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1181,10 +1179,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1193,7 +1191,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1202,6 +1199,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1215,12 +1213,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1233,7 +1231,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1242,6 +1239,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1272,12 +1270,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1293,14 +1291,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1314,15 +1312,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1334,13 +1332,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1348,19 +1345,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1368,17 +1367,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1388,18 +1386,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1407,18 +1403,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1429,8 +1425,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1443,13 +1439,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1462,54 +1458,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1519,37 +1515,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1557,20 +1553,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1581,10 +1577,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1601,7 +1597,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1613,38 +1609,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1657,20 +1653,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1693,49 +1689,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/util/memory/memcpy (param $0 i32) (local $1 i32) @@ -1906,29 +1902,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $1 i32.const 2 i32.add + local.tee $2 + i32.const 1 + i32.add local.set $0 local.get $3 - local.tee $2 i32.const 2 i32.add + local.tee $1 + i32.const 1 + i32.add local.set $3 - local.get $1 local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $1 + i32.load8_u + i32.store8 local.get $5 i32.const 3 i32.sub @@ -2186,143 +2180,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 @@ -2349,63 +2329,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 @@ -2432,23 +2406,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $1 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $3 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $3 - i32.load8_u - i32.store8 + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $3 - i32.const 1 - i32.add - local.tee $3 i32.load8_u i32.store8 local.get $0 @@ -2514,13 +2486,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -2549,13 +2521,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -2575,12 +2547,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -2590,12 +2562,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -2603,39 +2575,297 @@ i32.store16 end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $resolve-access/Container - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $resolve-access/Container $invalid + (func $~lib/number/U64#toString (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + if + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1728 + local.set $2 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $3 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + loop $while-continue|0 + local.get $0 + i64.const 100000000 + i64.ge_u + if + local.get $2 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i64.const 100000000 + i64.div_u + local.tee $0 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $2 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $2 + local.get $0 + i32.wrap_i64 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-access/Container + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end return end local.get $0 i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end + call $~lib/rt/itcms/__visit return end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end - unreachable + return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit + unreachable ) (func $~start memory.size @@ -2671,7 +2901,7 @@ i32.const 1376 global.set $~lib/rt/itcms/fromSpace ) - (func $~lib/rt/__newArray (result i32) + (func $resolve-access/arrayAccess (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2679,69 +2909,121 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - i32.const 1056 - local.set $0 - i32.const 8 - local.set $6 - block $~lib/util/memory/memmove|inlined.0 - i32.const 8 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $6 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - local.tee $3 - i32.const 1056 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - i32.const 1048 - local.get $3 + i32.store + local.get $6 + i32.const 4 i32.sub - i32.const -16 - i32.le_u - if - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 0 + i32.store i32.const 1056 - i32.lt_u - if + local.set $0 + i32.const 8 + local.set $7 + block $~lib/util/memory/memmove|inlined.0 + i32.const 8 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + local.tee $3 + i32.const 1056 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + i32.const 1048 local.get $3 - i32.const 7 - i32.and - i32.eqz + i32.sub + i32.const -16 + i32.le_u if - loop $while-continue|0 - local.get $3 - i32.const 7 - i32.and + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1056 + i32.lt_u + if + local.get $3 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|0 + local.get $3 + i32.const 7 + i32.and + if + local.get $7 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $3 + local.tee $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.tee $1 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $1 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $7 + i32.const 8 + i32.ge_u + if + local.get $3 + local.get $0 + i64.load + i64.store + local.get $7 + i32.const 8 + i32.sub + local.set $7 + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $7 if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 1 - i32.sub - local.set $6 local.get $3 local.tee $2 i32.const 1 @@ -2756,495 +3038,187 @@ local.get $1 i32.load8_u i32.store8 - br $while-continue|0 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $while-continue|2 end end - loop $while-continue|1 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $0 - i64.load - i64.store - local.get $6 - i32.const 8 - i32.sub - local.set $6 + else + local.get $3 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|3 local.get $3 - i32.const 8 + local.get $7 i32.add - local.set $3 - local.get $0 + i32.const 7 + i32.and + if + local.get $7 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + local.get $7 + i32.const 1 + i32.sub + local.tee $7 + i32.add + local.get $7 + i32.const 1056 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $7 i32.const 8 - i32.add - local.set $0 - br $while-continue|1 + i32.ge_u + if + local.get $3 + local.get $7 + i32.const 8 + i32.sub + local.tee $7 + i32.add + local.get $7 + i32.const 1056 + i32.add + i64.load + i64.store + br $while-continue|4 + end end end - end - loop $while-continue|2 - local.get $6 - if - local.get $3 - local.tee $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.load8_u - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 - local.get $3 - local.get $6 - i32.add - i32.const 7 - i32.and + loop $while-continue|5 + local.get $7 if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 local.get $3 - local.get $6 + local.get $7 i32.const 1 i32.sub - local.tee $6 + local.tee $7 i32.add - local.get $6 + local.get $7 i32.const 1056 i32.add i32.load8_u i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $6 - i32.const 8 - i32.sub - local.tee $6 - i32.add - local.get $6 - i32.const 1056 - i32.add - i64.load - i64.store - br $while-continue|4 + br $while-continue|5 end end end - loop $while-continue|5 - local.get $6 - if - local.get $3 - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.add - local.get $6 - i32.const 1056 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end end - end - local.get $5 - local.get $4 - i32.store - i32.const 16 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $4 - i32.store - local.get $4 - local.tee $0 - if - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white + local.get $5 + local.get $4 + local.tee $0 + i32.store + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $0 + i32.store local.get $0 - i32.const 20 - i32.sub local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq if - local.get $2 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 i32.const 20 i32.sub + local.tee $2 i32.load offset=4 i32.const 3 i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 local.get $3 + i32.const 20 + i32.sub + i32.load offset=4 i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq - select if - local.get $1 + local.get $2 call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $1 + i32.const 3 + i32.eq + select + if + local.get $2 + call $~lib/rt/itcms/Object#makeGray + end end end end - end - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - i32.const 8 - i32.store offset=8 - local.get $2 - i32.const 1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/util/number/utoa64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 + local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + i32.const 8 + i32.store offset=8 + local.get $3 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i64.eqz - if + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1728 - return - end - local.get $0 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.wrap_i64 - local.tee $3 - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 + local.get $6 local.get $3 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 i32.store - loop $while-continue|0 - local.get $0 - i64.const 100000000 - i64.ge_u - if - local.get $2 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $0 - i64.const 100000000 - i64.div_u - local.tee $0 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.tee $3 - i32.const 10000 - i32.rem_u - local.tee $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - local.get $2 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end + local.get $3 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 106 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $0 - i32.wrap_i64 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $resolve-access/arrayAccess (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/__newArray - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eqz - if - i32.const 1280 - i32.const 1488 - i32.const 106 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.load offset=4 + i64.load + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - i64.load - call $~lib/util/number/utoa64 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $resolve-access/Container#constructor (result i32) (local $0 i32) @@ -3312,7 +3286,7 @@ i64.store local.get $0 i64.load - call $~lib/util/number/utoa64 + call $~lib/number/U64#toString global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 346530940b..f09953a61a 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -6,8 +6,8 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i64_i64_i32_i64_=>_i32 (func (param i64 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-binary/a (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -264,7 +264,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -278,18 +278,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -297,20 +294,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -323,33 +320,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -513,16 +510,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 11248 i32.load i32.gt_u @@ -534,7 +531,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 11252 @@ -550,26 +547,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -678,8 +675,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -687,11 +682,12 @@ 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 $2 local.get $3 i32.const 4 @@ -699,6 +695,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -710,17 +707,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -926,7 +923,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -934,6 +930,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -949,7 +946,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -957,6 +953,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -1011,11 +1008,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1776 @@ -1039,11 +1036,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1776 @@ -1203,17 +1200,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1273,15 +1270,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1409,12 +1406,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1454,13 +1449,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1500,10 +1495,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1512,7 +1507,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1521,6 +1515,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1534,12 +1529,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1552,7 +1547,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1561,6 +1555,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1591,12 +1586,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1612,14 +1607,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1633,15 +1628,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1653,13 +1648,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1667,19 +1661,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1687,17 +1683,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1707,18 +1702,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1726,18 +1719,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1748,8 +1741,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1762,13 +1755,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1781,54 +1774,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1838,37 +1831,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1876,20 +1869,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1900,10 +1893,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1920,7 +1913,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1932,38 +1925,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1976,20 +1969,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -2012,49 +2005,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2071,13 +2064,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -2106,13 +2099,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -2132,12 +2125,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -2147,12 +2140,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -2160,88 +2153,207 @@ i32.store16 end ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (result i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11292 + i32.lt_s + if + i32.const 27696 + i32.const 27744 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1408 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) + (local $4 i32) (local $5 i32) (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) + (local $8 i32) + (local $9 i64) + (local $10 i32) (local $11 i64) - local.get $2 + (local $12 i64) + local.get $1 local.get $0 i64.sub - local.set $8 - local.get $2 + local.set $9 + local.get $1 i64.const 1 i32.const 0 - local.get $3 + local.get $2 i32.sub - local.tee $9 + local.tee $10 i64.extend_i32_s local.tee $0 i64.shl - local.tee $10 + local.tee $11 i64.const 1 i64.sub - local.tee $11 + local.tee $12 i64.and local.set $6 - local.get $2 + local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $1 - local.set $3 - local.get $1 + local.tee $2 + local.set $5 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $5 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $5 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $5 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $5 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $5 i32.const 100000000 i32.ge_u i32.add end end - local.set $7 + local.set $8 loop $while-continue|0 - local.get $7 + local.get $8 i32.const 0 i32.gt_s if @@ -2257,240 +2369,246 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $7 + local.get $8 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $1 + local.get $2 i32.const 1000000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 - local.set $3 + local.get $2 + local.set $5 i32.const 0 - local.set $1 + local.set $2 br $break|1 end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $4 local.get $5 i32.or if - local.get $5 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 i32.const 1 i32.shl i32.const 9760 i32.add - local.get $3 + local.get $5 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 + local.set $8 local.get $6 - local.get $1 + local.get $2 i64.extend_i32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $0 - local.get $4 + local.get $3 i64.le_u if - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 + local.get $8 i32.const 2 i32.shl i32.const 10688 i32.add i64.load32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 9758 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|3 - local.get $2 - local.get $4 + local.get $1 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $8 + local.get $9 i64.lt_u select if (result i32) i32.const 1 - local.get $8 + local.get $9 local.get $0 i64.sub local.get $0 - local.get $2 + local.get $1 i64.add local.tee $6 - local.get $8 + local.get $9 i64.sub i64.gt_u local.get $6 - local.get $8 + local.get $9 i64.lt_u select else i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $2 + local.get $1 i64.add local.set $0 br $while-continue|3 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 return end br $while-continue|0 end end - local.get $9 + local.get $10 i64.extend_i32_s local.set $0 loop $while-continue|4 - local.get $4 + local.get $3 i64.const 10 i64.mul - local.set $4 + local.set $3 local.get $6 i64.const 10 i64.mul - local.tee $2 + local.tee $1 local.get $0 i64.shr_u local.tee $6 - local.get $5 + local.get $4 i64.extend_i32_s i64.or i64.const 0 i64.ne if - local.get $5 + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + local.get $2 i32.const 1 i32.shl i32.const 9760 @@ -2502,32 +2620,28 @@ i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 - local.get $4 - local.get $2 - local.get $11 + local.set $8 + local.get $3 + local.get $1 + local.get $12 i64.and local.tee $6 i64.le_u br_if $while-continue|4 end - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $6 local.set $0 - local.get $8 + local.get $9 i32.const 0 - local.get $7 + local.get $8 i32.sub i32.const 2 i32.shl @@ -2535,39 +2649,39 @@ i32.add i64.load32_u i64.mul - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 9758 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|6 - local.get $10 - local.get $4 + local.get $11 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $2 + local.get $1 i64.lt_u select if (result i32) i32.const 1 - local.get $2 + local.get $1 local.get $0 i64.sub local.get $0 - local.get $10 + local.get $11 i64.add local.tee $6 - local.get $2 + local.get $1 i64.sub i64.gt_u - local.get $2 + local.get $1 local.get $6 i64.gt_u select @@ -2575,21 +2689,21 @@ i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $10 + local.get $11 i64.add local.set $0 br $while-continue|6 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2754,29 +2868,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2798,25 +2910,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2889,25 +3001,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2976,25 +3088,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3034,143 +3146,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3197,63 +3295,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3280,23 +3372,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3561,18 +3651,18 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 21 i32.le_s i32.const 0 local.get $0 - local.get $2 + local.get $3 i32.le_s select if (result i32) loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -3589,27 +3679,27 @@ br $for-loop|0 end end - local.get $2 + local.get $3 i32.const 1 i32.shl i32.const 9760 i32.add i32.const 3145774 i32.store - local.get $2 + local.get $3 i32.const 2 i32.add else - local.get $2 + local.get $3 i32.const 21 i32.le_s i32.const 0 - local.get $2 + local.get $3 i32.const 0 i32.gt_s select if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.shl i32.const 9760 @@ -3631,17 +3721,17 @@ i32.const 1 i32.add else - local.get $2 + local.get $3 i32.const 0 i32.le_s i32.const 0 - local.get $2 + local.get $3 i32.const -6 i32.gt_s select if (result i32) i32.const 2 - local.get $2 + local.get $3 i32.sub local.tee $3 i32.const 1 @@ -3688,7 +3778,7 @@ i32.const 9762 i32.const 101 i32.store16 - local.get $2 + local.get $3 i32.const 1 i32.sub local.tee $1 @@ -3702,46 +3792,47 @@ local.set $1 end local.get $1 + local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -3780,80 +3871,81 @@ local.get $1 i32.const 9760 i32.add - local.tee $3 + local.tee $1 i32.const 101 i32.store16 offset=2 - local.get $3 + local.get $1 + local.tee $2 i32.const 4 i32.add - local.get $2 + local.get $3 i32.const 1 i32.sub local.tee $1 i32.const 0 i32.lt_s local.tee $5 - if (result i32) + if i32.const 0 local.get $1 i32.sub - else - local.get $1 + local.set $1 end - local.tee $2 + local.get $1 + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 i32.const 1 i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 local.get $5 @@ -3874,8 +3966,9 @@ (local $1 i64) (local $2 i64) (local $3 i32) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) + (local $6 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3903,91 +3996,87 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $0 - i64.const 32 - i64.shr_u - local.set $2 - local.get $0 + local.tee $4 i64.const 4294967295 i64.and - local.tee $0 + local.set $1 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $4 i64.const 31 i64.shl - local.get $0 + local.get $1 + i64.const 31 + i64.shl + local.get $1 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.set $1 - local.get $2 - i64.const 31 - i64.shl - local.get $0 - i64.const 31 - i64.shl - local.tee $5 + local.tee $2 i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $2 i64.const 4294967295 i64.and + local.get $4 + i64.const 10 + i64.shl + i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - i32.const 3 - i32.add - local.get $2 + i64.const 1 + i64.sub + local.set $0 + local.get $4 i64.const 31 i64.shl local.get $1 + i64.const 31 + i64.shl + local.tee $2 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $2 i64.const 4294967295 i64.and - local.get $2 - i64.const 10 - i64.shl - i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $1 - local.get $4 + local.get $0 + global.get $~lib/util/number/_exp_pow i32.const 3 i32.add - local.get $1 - local.get $2 + local.get $0 + local.get $4 i64.const 2147483647 i64.mul - local.get $0 + local.get $1 i64.const 2147483647 i64.mul - local.get $0 + local.get $1 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $0 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $4 i64.const 4294966784 i64.mul - local.get $1 + local.get $0 i64.const 4294967295 i64.and i64.add @@ -4007,14 +4096,14 @@ local.get $3 i32.const 1 i32.shl - local.tee $4 + local.tee $5 i32.const 1 call $~lib/rt/itcms/__new local.tee $3 i32.store local.get $3 i32.const 9760 - local.get $4 + local.get $5 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -4265,7 +4354,7 @@ i32.const 1 global.set $resolve-binary/a i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4291,7 +4380,7 @@ i32.add global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4317,7 +4406,7 @@ i32.sub global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4343,7 +4432,7 @@ i32.shl global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4390,7 +4479,7 @@ i32.const 2 global.set $resolve-binary/a i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4416,7 +4505,7 @@ i32.rem_s global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4442,7 +4531,7 @@ i32.shl global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4468,7 +4557,7 @@ i32.shr_s global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4494,7 +4583,7 @@ i32.shr_u global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4520,7 +4609,7 @@ i32.and global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4546,7 +4635,7 @@ i32.or global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4572,7 +4661,7 @@ i32.xor global.set $resolve-binary/a global.get $resolve-binary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4594,7 +4683,7 @@ unreachable end i32.const 3 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4616,7 +4705,7 @@ unreachable end i32.const -1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4638,7 +4727,7 @@ unreachable end i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4660,7 +4749,7 @@ unreachable end i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4682,7 +4771,7 @@ unreachable end i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4704,7 +4793,7 @@ unreachable end i32.const 4 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4768,7 +4857,7 @@ unreachable end i32.const 4 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4790,7 +4879,7 @@ unreachable end i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4812,7 +4901,7 @@ unreachable end i32.const 3 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4834,7 +4923,7 @@ unreachable end i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4856,7 +4945,7 @@ unreachable end i32.const 3 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4878,7 +4967,7 @@ unreachable end i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4900,7 +4989,7 @@ unreachable end i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4922,7 +5011,7 @@ unreachable end i32.const 0 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4944,7 +5033,7 @@ unreachable end i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4966,7 +5055,7 @@ unreachable end i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -5412,120 +5501,6 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11292 - i32.lt_s - if - i32.const 27696 - i32.const 27744 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1408 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - select - local.tee $2 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) (func $resolve-binary/Bar#constructor (result i32) (local $0 i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 05b07190a6..1ced59c1ab 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -8,7 +8,7 @@ (type $none_=>_i32 (func (result i32))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) + (type $i64_i64_i32_i64_i32_=>_i32 (func (param i64 i64 i32 i64 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) @@ -411,8 +411,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -420,11 +418,12 @@ 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 $2 local.get $3 i32.const 4 @@ -432,6 +431,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -443,17 +443,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -659,7 +659,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -667,6 +666,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -682,7 +682,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -690,6 +689,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -744,11 +744,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1504 @@ -772,11 +772,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1504 @@ -936,17 +936,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1006,15 +1006,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1142,12 +1142,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1187,13 +1185,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1233,10 +1231,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1245,7 +1243,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1254,6 +1251,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1267,12 +1265,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1285,7 +1283,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1294,6 +1291,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1500,12 +1498,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1521,14 +1519,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1542,14 +1540,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1560,14 +1559,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1575,19 +1573,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1595,17 +1595,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1615,18 +1614,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1634,18 +1631,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1656,8 +1653,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1670,13 +1667,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1689,54 +1686,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1746,37 +1743,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1784,7 +1781,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -1792,69 +1789,68 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 - i32.store + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 i32.const 20 i32.sub - local.tee $1 i32.load offset=4 i32.const 3 i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq + select if local.get $1 call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end end end end ) (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - local.get $1 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1568 @@ -1873,12 +1869,12 @@ f32.store ) (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1568 @@ -1895,87 +1891,89 @@ i32.add f32.load ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) + (local $8 i32) + (local $9 i64) + (local $10 i32) (local $11 i64) - local.get $2 + (local $12 i64) + local.get $1 local.get $0 i64.sub - local.set $8 - local.get $2 + local.set $9 + local.get $1 i64.const 1 i32.const 0 - local.get $3 + local.get $2 i32.sub - local.tee $9 + local.tee $10 i64.extend_i32_s local.tee $0 i64.shl - local.tee $10 + local.tee $11 i64.const 1 i64.sub - local.tee $11 + local.tee $12 i64.and local.set $6 - local.get $2 + local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $1 - local.set $3 - local.get $1 + local.tee $2 + local.set $5 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $5 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $5 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $5 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $5 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $5 i32.const 100000000 i32.ge_u i32.add end end - local.set $7 + local.set $8 loop $while-continue|0 - local.get $7 + local.get $8 i32.const 0 i32.gt_s if @@ -1991,240 +1989,246 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $7 + local.get $8 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $1 + local.get $2 i32.const 1000000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 - local.set $3 + local.get $2 + local.set $5 i32.const 0 - local.set $1 + local.set $2 br $break|1 end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $4 local.get $5 i32.or if - local.get $5 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 i32.const 1 i32.shl i32.const 1776 i32.add - local.get $3 + local.get $5 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 + local.set $8 local.get $6 - local.get $1 + local.get $2 i64.extend_i32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $0 - local.get $4 + local.get $3 i64.le_u if - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 + local.get $8 i32.const 2 i32.shl i32.const 2704 i32.add i64.load32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 1774 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|3 - local.get $2 - local.get $4 + local.get $1 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $8 + local.get $9 i64.lt_u select if (result i32) i32.const 1 - local.get $8 + local.get $9 local.get $0 i64.sub local.get $0 - local.get $2 + local.get $1 i64.add local.tee $6 - local.get $8 + local.get $9 i64.sub i64.gt_u local.get $6 - local.get $8 + local.get $9 i64.lt_u select else i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $2 + local.get $1 i64.add local.set $0 br $while-continue|3 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 return end br $while-continue|0 end end - local.get $9 + local.get $10 i64.extend_i32_s local.set $0 loop $while-continue|4 - local.get $4 + local.get $3 i64.const 10 i64.mul - local.set $4 + local.set $3 local.get $6 i64.const 10 i64.mul - local.tee $2 + local.tee $1 local.get $0 i64.shr_u local.tee $6 - local.get $5 + local.get $4 i64.extend_i32_s i64.or i64.const 0 i64.ne if - local.get $5 + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + local.get $2 i32.const 1 i32.shl i32.const 1776 @@ -2236,32 +2240,28 @@ i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 - local.get $4 - local.get $2 - local.get $11 + local.set $8 + local.get $3 + local.get $1 + local.get $12 i64.and local.tee $6 i64.le_u br_if $while-continue|4 end - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $6 local.set $0 - local.get $8 + local.get $9 i32.const 0 - local.get $7 + local.get $8 i32.sub i32.const 2 i32.shl @@ -2269,39 +2269,39 @@ i32.add i64.load32_u i64.mul - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 1774 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|6 - local.get $10 - local.get $4 + local.get $11 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $2 + local.get $1 i64.lt_u select if (result i32) i32.const 1 - local.get $2 + local.get $1 local.get $0 i64.sub local.get $0 - local.get $10 + local.get $11 i64.add local.tee $6 - local.get $2 + local.get $1 i64.sub i64.gt_u - local.get $2 + local.get $1 local.get $6 i64.gt_u select @@ -2309,21 +2309,21 @@ i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $10 + local.get $11 i64.add local.set $0 br $while-continue|6 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2488,29 +2488,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2532,25 +2530,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2623,25 +2621,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2710,25 +2708,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2768,143 +2766,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2931,63 +2915,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3014,23 +2992,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3287,13 +3263,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -3322,13 +3298,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -3348,12 +3324,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -3363,12 +3339,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -3723,12 +3699,9 @@ (local $4 i32) (local $5 i32) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) local.get $0 f64.const 0 f64.lt @@ -3743,50 +3716,49 @@ local.get $0 end i64.reinterpret_f64 - local.tee $2 + local.tee $1 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $4 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $2 + local.get $1 i64.const 4503599627370495 i64.and i64.add - local.tee $1 + local.tee $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $2 + local.tee $1 + local.get $1 i64.clz i32.wrap_i64 - local.set $4 - local.get $2 - local.get $4 + local.tee $5 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $7 + local.get $4 i32.const 1 - local.get $7 + local.get $4 select i32.const 1075 i32.sub - local.tee $7 + local.tee $9 i32.const 1 i32.sub - local.get $4 + local.get $5 i32.sub local.set $4 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i64.const 4503599627370496 i64.eq i32.const 1 @@ -3796,7 +3768,7 @@ i64.shl i64.const 1 i64.sub - local.get $7 + local.get $9 local.get $5 i32.sub local.get $4 @@ -3847,95 +3819,86 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow + local.tee $6 + i64.const 4294967295 + i64.and + local.set $1 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_plus local.tee $3 i64.const 32 i64.shr_u - local.set $2 + local.tee $7 + i64.mul + local.get $1 + local.get $7 + i64.mul + local.get $1 local.get $3 i64.const 4294967295 i64.and local.tee $3 - global.get $~lib/util/number/_frc_plus - local.tee $6 + i64.mul i64.const 32 i64.shr_u - local.tee $11 - i64.mul + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add local.get $3 local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and - local.tee $12 - i64.mul + i64.add + i64.const 2147483647 + i64.add i64.const 32 i64.shr_u i64.add - local.set $6 + i64.const 1 + i64.sub + local.set $3 local.get $8 i32.const 1 i32.shl i32.const 1776 i32.add + local.get $6 + local.get $2 local.get $2 - local.get $1 - local.get $1 i64.clz - i32.wrap_i64 - local.tee $5 - i64.extend_i32_s i64.shl - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u - local.tee $10 - i64.mul - local.get $3 - local.get $10 + local.tee $7 i64.mul - local.get $3 local.get $1 - i64.const 4294967295 - i64.and - local.tee $1 + local.get $7 i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $10 - i64.const 32 - i64.shr_u - i64.add local.get $1 local.get $2 - i64.mul - local.get $10 i64.const 4294967295 i64.and - i64.add - i64.const 2147483647 - i64.add + local.tee $2 + i64.mul i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $9 - local.get $7 - local.get $5 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $2 - local.get $11 - i64.mul - local.get $6 + local.tee $7 i64.const 32 i64.shr_u i64.add local.get $2 - local.get $12 - i64.mul local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and i64.add @@ -3944,42 +3907,40 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $1 + local.get $3 local.get $4 - local.get $9 + global.get $~lib/util/number/_exp_pow i32.add i32.const -64 i32.sub - local.get $1 - local.get $2 + local.get $3 + local.get $6 global.get $~lib/util/number/_frc_minus - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u - local.tee $6 + local.tee $3 i64.mul + local.get $1 local.get $3 - local.get $6 i64.mul - local.get $3 local.get $1 + local.get $2 i64.const 4294967295 i64.and - local.tee $3 + local.tee $1 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $3 - i64.mul local.get $1 + local.get $6 + i64.mul + local.get $2 i64.const 4294967295 i64.and i64.add @@ -4116,7 +4077,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -4130,18 +4091,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -4149,20 +4107,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -4175,33 +4133,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -4210,10 +4168,10 @@ i32.eqz ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1568 @@ -4230,10 +4188,10 @@ i32.store8 ) (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1568 @@ -4251,25 +4209,25 @@ (func $~lib/number/U8#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4852 - i32.lt_s - if - i32.const 21264 - i32.const 21312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa32 + block $__inlined_func$~lib/util/number/utoa32 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4852 + i32.lt_s + if + i32.const 21264 + i32.const 21312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.const 255 i32.and @@ -4281,7 +4239,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3536 - local.set $0 br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer @@ -4331,50 +4288,40 @@ i32.add end end - local.tee $2 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 - local.get $1 local.get $2 + local.get $1 + local.get $0 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 end - local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $invalid - end - return + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid end return end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit + return end - return + unreachable end local.get $0 i32.load @@ -4862,7 +4809,10 @@ end local.get $0 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link local.get $0 i32.const 0 i32.store offset=4 @@ -4896,7 +4846,10 @@ call $~lib/memory/memory.fill local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView#set:buffer + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 6b1d64e078..e6d470de48 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -209,16 +209,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 3424 i32.load i32.gt_u @@ -230,7 +230,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 3428 @@ -246,26 +246,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -374,8 +374,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -383,11 +381,12 @@ 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 $2 local.get $3 i32.const 4 @@ -395,6 +394,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -406,17 +406,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -622,7 +622,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -630,6 +629,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -645,7 +645,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -653,6 +652,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -707,11 +707,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1792 @@ -735,11 +735,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1792 @@ -899,17 +899,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -969,15 +969,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1105,12 +1105,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1150,13 +1148,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1196,10 +1194,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1208,7 +1206,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1217,6 +1214,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1230,12 +1228,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1248,7 +1246,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1257,6 +1254,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1314,8 +1312,8 @@ br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1329,15 +1327,15 @@ local.get $0 i32.const 16 i32.add - local.set $1 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 - local.get $1 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1348,14 +1346,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $1 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1363,19 +1360,21 @@ i32.const 4 i32.sub end - local.tee $1 - call $~lib/rt/tlsf/searchBlock local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $3 i32.eqz if - local.get $1 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1 i32.const 27 - local.get $1 + local.get $2 i32.clz i32.sub i32.shl @@ -1383,17 +1382,16 @@ i32.sub i32.add else - local.get $1 + local.get $2 end i32.const 4 - memory.size - local.tee $3 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $5 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1403,18 +1401,16 @@ i32.and i32.const 16 i32.shr_u - local.set $4 - local.get $3 - local.get $4 + local.tee $3 local.get $3 local.get $4 - i32.gt_s + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1423,7 +1419,7 @@ end end local.get $5 - local.get $3 + local.get $4 i32.const 16 i32.shl memory.size @@ -1431,9 +1427,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $3 i32.eqz if i32.const 0 @@ -1444,8 +1440,8 @@ unreachable end end - local.get $1 local.get $2 + local.get $3 i32.load i32.const -4 i32.and @@ -1459,12 +1455,12 @@ unreachable end local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 i32.load - local.set $3 - local.get $1 + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1477,54 +1473,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const -4 i32.and - local.get $1 + local.get $2 i32.sub - local.tee $4 + local.tee $1 i32.const 16 i32.ge_u if - local.get $2 - local.get $1 local.get $3 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store - local.get $1 local.get $2 + local.get $3 i32.const 4 i32.add i32.add - local.tee $1 - local.get $4 + local.tee $2 + local.get $1 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $1 + local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $2 local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.tee $1 - local.get $2 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add - local.get $1 local.get $2 + local.get $3 i32.load i32.const -4 i32.and @@ -1534,37 +1530,37 @@ i32.and i32.store end - local.get $2 + local.get $3 i32.const 1 i32.store offset=12 - local.get $2 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 - local.set $5 + local.set $1 + local.get $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $2 - local.get $5 + local.get $3 + local.get $1 i32.store offset=8 - local.get $5 - local.get $2 - local.get $5 + local.get $1 + local.get $3 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $2 + local.get $3 i32.load i32.const -4 i32.and @@ -1572,22 +1568,22 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 + local.get $3 i32.const 20 i32.add - local.tee $5 - local.set $4 + local.tee $3 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1596,18 +1592,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $4 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 @@ -1616,10 +1612,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1628,38 +1624,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 - local.get $4 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 - local.get $0 local.get $1 + local.get $0 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $4 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $1 i32.const 0 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.store offset=8 local.get $0 @@ -1672,20 +1668,20 @@ i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $1 i32.const 0 i32.store offset=12 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 0 i32.store offset=20 - local.get $3 + local.get $1 i32.const 0 i32.store offset=24 local.get $0 @@ -1708,49 +1704,49 @@ i32.sub i32.const 0 i32.store - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $4 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $5 + local.get $3 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1890,7 +1886,6 @@ local.set $1 br $__inlined_func$~lib/util/number/itoa32 end - global.get $~lib/memory/__stack_pointer i32.const 0 local.get $1 i32.sub @@ -1901,46 +1896,49 @@ local.tee $4 select local.tee $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index 1b85176177..2536a6c7ec 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -178,16 +178,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1440 i32.load i32.gt_u @@ -199,7 +199,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -215,26 +215,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -343,8 +343,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -352,11 +350,12 @@ 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 $2 local.get $3 i32.const 4 @@ -364,6 +363,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -375,17 +375,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -591,7 +591,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -599,6 +598,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -614,7 +614,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -622,6 +621,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -676,11 +676,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -704,11 +704,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -868,17 +868,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -938,15 +938,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1074,12 +1074,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1217,20 +1215,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1239,18 +1238,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1258,15 +1255,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1293,12 +1290,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1308,7 +1305,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1317,19 +1314,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1360,26 +1357,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index d015ce8fa5..2bc063e3b9 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (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))) @@ -174,16 +174,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1440 i32.load i32.gt_u @@ -195,7 +195,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -211,26 +211,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -339,8 +339,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -348,11 +346,12 @@ 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 $2 local.get $3 i32.const 4 @@ -360,6 +359,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -371,17 +371,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -587,7 +587,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -595,6 +594,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -610,7 +610,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -618,6 +617,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -672,11 +672,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -700,11 +700,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -864,17 +864,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -934,15 +934,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1070,12 +1070,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1157,11 +1155,126 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-new/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17860 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $resolve-new/Foo#constructor + global.set $resolve-new/foo + call $resolve-new/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $resolve-new/Foo#constructor (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1213,20 +1326,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if - i32.const 4 memory.size - local.tee $0 + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $1 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1235,18 +1349,16 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $0 - local.get $2 + local.tee $0 local.get $0 - local.get $2 - i32.gt_s + local.get $1 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $0 memory.grow i32.const 0 i32.lt_s @@ -1254,15 +1366,15 @@ unreachable end end + local.get $2 local.get $1 - local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1289,12 +1401,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $2 + local.tee $1 i32.const -4 i32.and i32.const 28 @@ -1304,7 +1416,7 @@ i32.ge_u if local.get $0 - local.get $2 + local.get $1 i32.const 2 i32.and i32.const 28 @@ -1313,19 +1425,19 @@ local.get $0 i32.const 32 i32.add - local.tee $2 + local.tee $1 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 local.get $2 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $2 + local.get $1 i32.const -2 i32.and i32.store @@ -1356,26 +1468,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 - local.get $1 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1387,134 +1499,16 @@ i32.add i32.add global.set $~lib/rt/itcms/total + local.get $4 local.get $0 i32.const 20 i32.add - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-new/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1476 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17860 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $resolve-new/Foo#constructor - global.set $resolve-new/foo - call $resolve-new/Foo#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $resolve-new/Foo#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1476 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) ) diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 5c60253bf6..8f2d7d0c12 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -209,16 +209,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 3680 i32.load i32.gt_u @@ -230,7 +230,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 3684 @@ -246,26 +246,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -374,8 +374,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -383,11 +381,12 @@ 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 $2 local.get $3 i32.const 4 @@ -395,6 +394,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -406,17 +406,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -622,7 +622,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -630,6 +629,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -645,7 +645,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -653,6 +652,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -707,11 +707,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -735,11 +735,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -899,17 +899,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -969,15 +969,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1105,12 +1105,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1150,13 +1148,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1196,10 +1194,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1208,7 +1206,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1217,6 +1214,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1230,12 +1228,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1248,7 +1246,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1257,6 +1254,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1287,12 +1285,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1308,14 +1306,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1329,15 +1327,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1349,13 +1347,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1363,19 +1360,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1383,17 +1382,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1403,18 +1401,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1422,18 +1418,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1444,8 +1440,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1458,13 +1454,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1477,54 +1473,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1534,37 +1530,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1572,20 +1568,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1596,10 +1592,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1616,7 +1612,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1628,38 +1624,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1672,20 +1668,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1708,57 +1704,273 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - local.get $1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + if + i32.const 20128 + i32.const 20176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $1 + br $__inlined_func$~lib/util/number/itoa32 + end + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $3 + select + local.tee $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $3 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $1 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $1 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $1 + i32.eq if i32.const 1 return @@ -1778,7 +1990,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1792,18 +2004,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1811,20 +2020,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1837,33 +2046,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -1955,7 +2164,7 @@ i32.const 1568 global.set $~lib/rt/itcms/fromSpace i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -1977,7 +2186,7 @@ unreachable end i32.const 11 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -1999,7 +2208,7 @@ unreachable end i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2021,7 +2230,7 @@ unreachable end i32.const 22 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2043,7 +2252,7 @@ unreachable end i32.const 3 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2065,7 +2274,7 @@ unreachable end i32.const 33 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2087,7 +2296,7 @@ unreachable end i32.const 4 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2109,7 +2318,7 @@ unreachable end i32.const 5 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2131,7 +2340,7 @@ unreachable end i32.const 55 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2153,7 +2362,7 @@ unreachable end i32.const 7 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2205,7 +2414,7 @@ i32.store offset=8 local.get $0 i32.load - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2227,7 +2436,7 @@ unreachable end i32.const 8 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2261,219 +2470,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3716 - i32.lt_s - if - i32.const 20128 - i32.const 20176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $4 - select - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $4 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $1 - local.set $0 - local.get $2 - local.set $1 - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $2 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $3 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $2 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - i32.const 100 - i32.ge_u - if - local.get $3 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - if - local.get $3 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - else - local.get $3 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 48 - i32.add - i32.store16 - end - local.get $4 - if - local.get $3 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) ) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 51fd751aea..fd989e47d8 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -7,7 +7,7 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) + (type $i64_i64_i32_i64_=>_i32 (func (param i64 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -213,16 +213,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 4608 i32.load i32.gt_u @@ -234,7 +234,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 4612 @@ -250,26 +250,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -378,8 +378,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -387,11 +385,12 @@ 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 $2 local.get $3 i32.const 4 @@ -399,6 +398,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -410,17 +410,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -626,7 +626,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -634,6 +633,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -649,7 +649,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -657,6 +656,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -711,11 +711,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -739,11 +739,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -903,17 +903,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -973,15 +973,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1109,12 +1109,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1154,13 +1152,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1200,10 +1198,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1212,7 +1210,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1221,6 +1218,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1234,12 +1232,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1252,7 +1250,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1261,6 +1258,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1318,8 +1316,8 @@ br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1333,15 +1331,15 @@ local.get $0 i32.const 16 i32.add - local.set $1 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $5 - local.get $1 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1352,14 +1350,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $1 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1367,19 +1364,21 @@ i32.const 4 i32.sub end - local.tee $1 - call $~lib/rt/tlsf/searchBlock local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $3 i32.eqz if - local.get $1 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1 i32.const 27 - local.get $1 + local.get $2 i32.clz i32.sub i32.shl @@ -1387,17 +1386,16 @@ i32.sub i32.add else - local.get $1 + local.get $2 end i32.const 4 - memory.size - local.tee $3 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $5 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1407,18 +1405,16 @@ i32.and i32.const 16 i32.shr_u - local.set $4 - local.get $3 - local.get $4 + local.tee $3 local.get $3 local.get $4 - i32.gt_s + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1427,7 +1423,7 @@ end end local.get $5 - local.get $3 + local.get $4 i32.const 16 i32.shl memory.size @@ -1435,9 +1431,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $3 i32.eqz if i32.const 0 @@ -1448,8 +1444,8 @@ unreachable end end - local.get $1 local.get $2 + local.get $3 i32.load i32.const -4 i32.and @@ -1463,12 +1459,12 @@ unreachable end local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 i32.load - local.set $3 - local.get $1 + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1481,54 +1477,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const -4 i32.and - local.get $1 + local.get $2 i32.sub - local.tee $4 + local.tee $1 i32.const 16 i32.ge_u if - local.get $2 - local.get $1 local.get $3 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store - local.get $1 local.get $2 + local.get $3 i32.const 4 i32.add i32.add - local.tee $1 - local.get $4 + local.tee $2 + local.get $1 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $1 + local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $2 local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.tee $1 - local.get $2 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add - local.get $1 local.get $2 + local.get $3 i32.load i32.const -4 i32.and @@ -1538,37 +1534,37 @@ i32.and i32.store end - local.get $2 + local.get $3 i32.const 1 i32.store offset=12 - local.get $2 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 - local.set $5 + local.set $1 + local.get $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $2 - local.get $5 + local.get $3 + local.get $1 i32.store offset=8 - local.get $5 - local.get $2 - local.get $5 + local.get $1 + local.get $3 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $2 + local.get $3 i32.load i32.const -4 i32.and @@ -1576,22 +1572,22 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 + local.get $3 i32.const 20 i32.add - local.tee $5 - local.set $4 + local.tee $3 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1600,18 +1596,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $4 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 @@ -1620,10 +1616,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1632,38 +1628,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 - local.get $4 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 - local.get $0 local.get $1 + local.get $0 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $4 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $1 i32.const 0 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.store offset=8 local.get $0 @@ -1676,20 +1672,20 @@ i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $1 i32.const 0 i32.store offset=12 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 0 i32.store offset=20 - local.get $3 + local.get $1 i32.const 0 i32.store offset=24 local.get $0 @@ -1712,49 +1708,49 @@ i32.sub i32.const 0 i32.store - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $4 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $5 + local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1771,13 +1767,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -1806,13 +1802,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -1832,12 +1828,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -1847,12 +1843,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -1886,7 +1882,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1900,18 +1896,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1919,20 +1912,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1945,33 +1938,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -1979,88 +1972,90 @@ end i32.eqz ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (result i32) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) + (local $4 i32) (local $5 i32) (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) + (local $8 i32) + (local $9 i64) + (local $10 i32) (local $11 i64) - local.get $2 + (local $12 i64) + local.get $1 local.get $0 i64.sub - local.set $8 - local.get $2 + local.set $9 + local.get $1 i64.const 1 i32.const 0 - local.get $3 + local.get $2 i32.sub - local.tee $9 + local.tee $10 i64.extend_i32_s local.tee $0 i64.shl - local.tee $10 + local.tee $11 i64.const 1 i64.sub - local.tee $11 + local.tee $12 i64.and local.set $6 - local.get $2 + local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $1 - local.set $3 - local.get $1 + local.tee $2 + local.set $5 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $5 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $5 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $5 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $5 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $5 i32.const 100000000 i32.ge_u i32.add end end - local.set $7 + local.set $8 loop $while-continue|0 - local.get $7 + local.get $8 i32.const 0 i32.gt_s if @@ -2076,240 +2071,246 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $7 + local.get $8 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $1 + local.get $2 i32.const 1000000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 - local.set $3 + local.get $2 + local.set $5 i32.const 0 - local.set $1 + local.set $2 br $break|1 end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $4 local.get $5 i32.or if - local.get $5 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 i32.const 1 i32.shl i32.const 3472 i32.add - local.get $3 + local.get $5 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 + local.set $8 local.get $6 - local.get $1 + local.get $2 i64.extend_i32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $0 - local.get $4 + local.get $3 i64.le_u if - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 + local.get $8 i32.const 2 i32.shl i32.const 4400 i32.add i64.load32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 3470 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|3 - local.get $2 - local.get $4 + local.get $1 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $8 + local.get $9 i64.lt_u select if (result i32) i32.const 1 - local.get $8 + local.get $9 local.get $0 i64.sub local.get $0 - local.get $2 + local.get $1 i64.add local.tee $6 - local.get $8 + local.get $9 i64.sub i64.gt_u local.get $6 - local.get $8 + local.get $9 i64.lt_u select else i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $2 + local.get $1 i64.add local.set $0 br $while-continue|3 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 return end br $while-continue|0 end end - local.get $9 + local.get $10 i64.extend_i32_s local.set $0 loop $while-continue|4 - local.get $4 + local.get $3 i64.const 10 i64.mul - local.set $4 + local.set $3 local.get $6 i64.const 10 i64.mul - local.tee $2 + local.tee $1 local.get $0 i64.shr_u local.tee $6 - local.get $5 + local.get $4 i64.extend_i32_s i64.or i64.const 0 i64.ne if - local.get $5 + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + local.get $2 i32.const 1 i32.shl i32.const 3472 @@ -2321,32 +2322,28 @@ i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 - local.get $4 - local.get $2 - local.get $11 + local.set $8 + local.get $3 + local.get $1 + local.get $12 i64.and local.tee $6 i64.le_u br_if $while-continue|4 end - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $6 local.set $0 - local.get $8 + local.get $9 i32.const 0 - local.get $7 + local.get $8 i32.sub i32.const 2 i32.shl @@ -2354,39 +2351,39 @@ i32.add i64.load32_u i64.mul - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 3470 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|6 - local.get $10 - local.get $4 + local.get $11 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $2 + local.get $1 i64.lt_u select if (result i32) i32.const 1 - local.get $2 + local.get $1 local.get $0 i64.sub local.get $0 - local.get $10 + local.get $11 i64.add local.tee $6 - local.get $2 + local.get $1 i64.sub i64.gt_u - local.get $2 + local.get $1 local.get $6 i64.gt_u select @@ -2394,21 +2391,21 @@ i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $10 + local.get $11 i64.add local.set $0 br $while-continue|6 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2573,29 +2570,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2617,25 +2612,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2708,25 +2703,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2795,25 +2790,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2853,143 +2848,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 @@ -3016,63 +2997,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3099,23 +3074,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3510,67 +3483,67 @@ local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s local.tee $3 if i32.const 0 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 end - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.set $0 + local.set $1 i32.const 3476 - local.get $1 local.get $0 + local.get $1 i32.const 1 i32.add local.tee $0 @@ -3744,21 +3717,21 @@ ) (func $~start (local $0 i32) - (local $1 i32) - (local $2 i64) + (local $1 i64) + (local $2 i32) (local $3 i64) (local $4 i64) (local $5 i64) - (local $6 f64) + (local $6 i64) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 4644 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3802,7 +3775,7 @@ global.get $~lib/memory/__stack_pointer i32.const 4644 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3821,10 +3794,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 local.get $0 i32.store - local.get $1 + local.get $2 i32.const 3232 i32.store offset=4 local.get $0 @@ -3846,7 +3819,7 @@ global.get $~lib/memory/__stack_pointer i32.const 4644 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3859,33 +3832,34 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $5 - i64.const 4294967295 - i64.and - local.set $3 - local.get $5 + local.tee $1 i64.const 32 i64.shr_u - local.tee $5 + local.tee $4 i64.const 31 i64.shl - local.get $3 + local.tee $6 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $1 i64.const 31 i64.shl - local.get $3 + local.tee $5 + local.get $1 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $3 i64.const 32 i64.shr_u i64.add - local.get $4 + local.get $3 i64.const 4294967295 i64.and - local.get $5 + local.get $4 i64.const 10 i64.shl i64.add @@ -3896,18 +3870,13 @@ i64.add i64.const 1 i64.sub - local.set $2 + local.set $3 + local.get $6 local.get $5 - i64.const 31 - i64.shl - local.get $3 - i64.const 31 - i64.shl - local.tee $4 i64.const 32 i64.shr_u i64.add - local.get $4 + local.get $5 i64.const 4294967295 i64.and i64.const 2147483647 @@ -3915,35 +3884,31 @@ i64.const 32 i64.shr_u i64.add + local.get $3 global.get $~lib/util/number/_exp_pow - local.tee $1 - i32.const 1 - i32.add - local.get $2 - local.get $1 i32.const 1 i32.add - local.get $2 - local.get $5 + local.get $3 + local.get $4 i64.const 2147483647 i64.mul - local.get $3 + local.get $1 i64.const 2147483647 i64.mul - local.get $3 + local.get $1 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $2 + local.tee $1 i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $4 i64.const 4294966784 i64.mul - local.get $2 + local.get $1 i64.const 4294967295 i64.and i64.add @@ -3958,28 +3923,27 @@ call $~lib/util/number/genDigits global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.const 1 i32.shl - local.tee $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 call $~lib/rt/itcms/__new local.tee $0 i32.store local.get $0 i32.const 3472 - local.get $1 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 local.get $0 i32.store - local.get $1 + local.get $2 i32.const 4464 i32.store offset=4 local.get $0 diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 3cb3074983..2bb32c9ef1 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -229,16 +229,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 3728 i32.load i32.gt_u @@ -250,7 +250,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 3732 @@ -266,26 +266,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -394,8 +394,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -403,11 +401,12 @@ 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 $2 local.get $3 i32.const 4 @@ -415,6 +414,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -426,17 +426,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -642,7 +642,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -650,6 +649,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -665,7 +665,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -673,6 +672,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -727,11 +727,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -755,11 +755,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -919,17 +919,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -989,15 +989,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1125,12 +1125,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1170,13 +1168,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1216,10 +1214,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1228,7 +1226,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1237,6 +1234,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1250,12 +1248,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1268,7 +1266,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1277,6 +1274,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1307,12 +1305,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1328,14 +1326,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1349,15 +1347,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1369,13 +1367,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1383,19 +1380,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1403,17 +1402,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1423,18 +1421,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1442,18 +1438,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1464,8 +1460,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1478,13 +1474,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1497,54 +1493,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1554,37 +1550,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1592,20 +1588,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1616,10 +1612,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1636,7 +1632,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1648,38 +1644,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1692,20 +1688,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1728,57 +1724,273 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - local.get $1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3772 + i32.lt_s + if + i32.const 20176 + i32.const 20224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $1 + br $__inlined_func$~lib/util/number/itoa32 + end + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $3 + select + local.tee $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $3 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $1 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $1 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $1 + i32.eq if i32.const 1 return @@ -1798,7 +2010,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1812,18 +2024,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1831,20 +2040,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1857,33 +2066,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -1981,7 +2190,7 @@ i32.const 1568 global.set $~lib/rt/itcms/fromSpace i32.const -1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2003,7 +2212,7 @@ unreachable end i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2029,7 +2238,7 @@ i32.add global.set $resolve-unary/a global.get $resolve-unary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2055,7 +2264,7 @@ i32.sub global.set $resolve-unary/a global.get $resolve-unary/a - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2125,7 +2334,7 @@ global.get $resolve-unary/a i32.const -1 i32.xor - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2152,7 +2361,7 @@ i32.add global.set $resolve-unary/b local.get $0 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2179,7 +2388,7 @@ i32.sub global.set $resolve-unary/b local.get $0 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -2531,219 +2740,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3772 - i32.lt_s - if - i32.const 20176 - i32.const 20224 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $4 - select - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $4 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $1 - local.set $0 - local.get $2 - local.set $1 - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $2 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $3 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $2 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - i32.const 100 - i32.ge_u - if - local.get $3 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - if - local.get $3 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - else - local.get $3 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 48 - i32.add - i32.store16 - end - local.get $4 - if - local.get $3 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) ) diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index 8b15381f84..a95686b7df 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $rt/finalize/expect (mut i32) (i32.const 0)) @@ -172,16 +172,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1488 i32.load i32.gt_u @@ -193,7 +193,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -209,26 +209,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -337,8 +337,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -346,11 +344,12 @@ 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 $2 local.get $3 i32.const 4 @@ -358,6 +357,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -369,17 +369,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -585,7 +585,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -593,6 +592,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -608,7 +608,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -616,6 +615,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -670,11 +670,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -698,11 +698,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -862,17 +862,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -932,15 +932,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1083,12 +1083,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1170,11 +1168,63 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $start:rt/finalize (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + memory.size + i32.const 16 + i32.shl + i32.const 17908 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1226,20 +1276,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if - i32.const 4 memory.size - local.tee $0 + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $1 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1248,18 +1299,16 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $0 - local.get $2 + local.tee $0 local.get $0 - local.get $2 - i32.gt_s + local.get $1 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $0 memory.grow i32.const 0 i32.lt_s @@ -1267,15 +1316,15 @@ unreachable end end + local.get $2 local.get $1 - local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1302,12 +1351,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $2 + local.tee $1 i32.const -4 i32.and i32.const 28 @@ -1317,7 +1366,7 @@ i32.ge_u if local.get $0 - local.get $2 + local.get $1 i32.const 2 i32.and i32.const 28 @@ -1326,19 +1375,19 @@ local.get $0 i32.const 32 i32.add - local.tee $2 + local.tee $1 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 local.get $2 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $2 + local.get $1 i32.const -2 i32.and i32.store @@ -1369,26 +1418,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 - local.get $1 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1400,107 +1449,17 @@ i32.add i32.add global.set $~lib/rt/itcms/total + local.get $4 local.get $0 i32.const 20 i32.add - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $rt/finalize/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - global.get $~started - if - return - end - i32.const 1 - global.set $~started - memory.size - i32.const 16 - i32.shl - i32.const 17908 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 global.set $rt/finalize/expect global.get $~lib/rt/itcms/state i32.const 0 @@ -1546,4 +1505,42 @@ unreachable end ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/finalize/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:rt/finalize + ) ) diff --git a/tests/compiler/rt/flags.optimized.wat b/tests/compiler/rt/flags.optimized.wat index 226e38f4e9..8290635509 100644 --- a/tests/compiler/rt/flags.optimized.wat +++ b/tests/compiler/rt/flags.optimized.wat @@ -15,10 +15,10 @@ (export "memory" (memory $0)) (start $~start) (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - local.get $0 i32.const 1200 i32.load - i32.gt_u + local.get $0 + i32.lt_u if i32.const 1056 i32.const 1120 diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 2f088c4a51..469909e781 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -212,16 +212,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1504 i32.load i32.gt_u @@ -233,7 +233,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1508 @@ -249,26 +249,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -377,8 +377,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -386,11 +384,12 @@ 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 $2 local.get $3 i32.const 4 @@ -398,6 +397,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -409,17 +409,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -625,7 +625,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -633,6 +632,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -648,7 +648,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -656,6 +655,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -710,11 +710,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -738,11 +738,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -902,17 +902,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -972,15 +972,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1108,12 +1108,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1251,20 +1249,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1273,18 +1272,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1292,15 +1289,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1327,12 +1324,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1342,7 +1339,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1351,19 +1348,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1394,26 +1391,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index f6d53b32c4..1178f405c9 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -134,11 +134,11 @@ local.get $0 i32.store offset=8 local.get $0 - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.or i32.store offset=4 ) @@ -352,8 +352,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -361,11 +359,12 @@ 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 $2 local.get $3 i32.const 4 @@ -373,6 +372,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -384,17 +384,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -600,7 +600,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -608,6 +607,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -623,7 +623,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -631,6 +630,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -685,11 +685,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -713,11 +713,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -877,17 +877,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -947,15 +947,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1083,12 +1083,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1128,13 +1126,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1174,10 +1172,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1186,7 +1184,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1195,6 +1192,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1208,12 +1206,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1226,7 +1224,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1235,6 +1232,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1265,12 +1263,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1286,14 +1284,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1307,15 +1305,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1327,13 +1325,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1341,19 +1338,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1361,17 +1360,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1381,18 +1379,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1400,18 +1396,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1422,8 +1418,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1436,13 +1432,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1455,54 +1451,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1512,37 +1508,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1550,20 +1546,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1574,10 +1570,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1594,7 +1590,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1606,38 +1602,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1650,20 +1646,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1686,49 +1682,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/rt/runtime-minimal-export.optimized.wat b/tests/compiler/rt/runtime-minimal-export.optimized.wat index 3971c2f831..87505befa3 100644 --- a/tests/compiler/rt/runtime-minimal-export.optimized.wat +++ b/tests/compiler/rt/runtime-minimal-export.optimized.wat @@ -133,8 +133,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -142,11 +140,12 @@ 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 $2 local.get $3 i32.const 4 @@ -154,6 +153,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -165,17 +165,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -381,7 +381,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -389,6 +388,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -404,7 +404,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -412,6 +411,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -466,11 +466,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1184 @@ -494,11 +494,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1184 @@ -643,13 +643,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -689,10 +689,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -701,7 +701,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -710,6 +709,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -723,12 +723,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -741,7 +741,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -750,6 +749,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -777,14 +777,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -795,14 +796,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $3 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -812,9 +812,11 @@ end local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $2 i32.eqz if + memory.size + local.tee $4 local.get $3 i32.const 536870910 i32.lt_u @@ -833,14 +835,13 @@ local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -850,18 +851,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $2 + local.get $2 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -869,18 +868,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $2 i32.eqz if i32.const 0 @@ -892,7 +891,7 @@ end end local.get $3 - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -905,12 +904,12 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $2 - local.get $6 call $~lib/rt/tlsf/removeBlock - local.get $6 + local.get $2 i32.load - local.set $5 + local.set $4 local.get $3 i32.const 4 i32.add @@ -924,54 +923,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and local.get $3 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 + local.get $2 local.get $3 - local.get $5 + local.get $4 i32.const 2 i32.and i32.or i32.store local.get $3 - local.get $6 + local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $2 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $2 i32.const 4 i32.add local.tee $3 - local.get $6 + local.get $2 i32.load i32.const -4 i32.and i32.add local.get $3 - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -981,37 +980,37 @@ i32.and i32.store end - local.get $6 + local.get $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/tcms/fromSpace - local.tee $1 + local.tee $0 i32.load offset=8 - local.set $0 - local.get $6 - local.get $1 + local.set $1 + local.get $2 + local.get $0 global.get $~lib/rt/tcms/white i32.or i32.store offset=4 - local.get $6 - local.get $0 + local.get $2 + local.get $1 i32.store offset=8 - local.get $0 - local.get $6 - local.get $0 + local.get $1 + local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 - local.get $6 + local.get $0 + local.get $2 i32.store offset=8 global.get $~lib/rt/tcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1019,7 +1018,7 @@ i32.add i32.add global.set $~lib/rt/tcms/total - local.get $6 + local.get $2 i32.const 20 i32.add ) @@ -1066,11 +1065,11 @@ local.get $0 i32.store offset=8 local.get $0 - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.or i32.store offset=4 ) @@ -1241,11 +1240,11 @@ local.get $5 i32.ne if - local.get $4 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $4 i32.ne if i32.const 0 @@ -1268,14 +1267,14 @@ end end global.get $~lib/rt/tcms/fromSpace - local.tee $2 + local.tee $3 i32.load offset=4 i32.const -4 i32.and local.set $0 loop $while-continue|2 local.get $0 - local.get $2 + local.get $3 i32.ne if global.get $~lib/rt/tcms/white @@ -1332,7 +1331,7 @@ local.get $0 i32.const 4 i32.sub - local.set $3 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1342,7 +1341,7 @@ if (result i32) i32.const 1 else - local.get $3 + local.get $2 i32.load i32.const 1 i32.and @@ -1355,13 +1354,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $3 + local.get $2 + local.tee $0 + local.get $0 i32.load i32.const 1 i32.or i32.store - local.get $3 + local.get $0 call $~lib/rt/tlsf/insertBlock end end @@ -1369,15 +1369,15 @@ br $while-continue|2 end end - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.store offset=4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.store offset=8 local.get $5 global.set $~lib/rt/tcms/fromSpace - local.get $2 + local.get $3 global.set $~lib/rt/tcms/toSpace local.get $4 global.set $~lib/rt/tcms/white diff --git a/tests/compiler/rt/runtime-stub-export.optimized.wat b/tests/compiler/rt/runtime-stub-export.optimized.wat index 7a9ee9f9ef..d55fbb4dbe 100644 --- a/tests/compiler/rt/runtime-stub-export.optimized.wat +++ b/tests/compiler/rt/runtime-stub-export.optimized.wat @@ -41,7 +41,7 @@ local.get $0 i32.const 16 i32.add - local.tee $2 + local.tee $7 i32.const 1073741820 i32.gt_u if @@ -53,22 +53,22 @@ unreachable end global.get $~lib/rt/stub/offset - local.tee $6 + local.tee $5 i32.const 4 i32.add - local.tee $4 - local.get $2 + local.tee $2 + local.get $7 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $7 + local.tee $4 i32.add - local.tee $2 + local.tee $6 memory.size - local.tee $5 + local.tee $7 i32.const 16 i32.shl i32.const 15 @@ -78,8 +78,8 @@ local.tee $3 i32.gt_u if - local.get $5 - local.get $2 + local.get $7 + local.get $6 local.get $3 i32.sub i32.const 65535 @@ -90,7 +90,7 @@ i32.shr_u local.tee $3 local.get $3 - local.get $5 + local.get $7 i32.lt_s select memory.grow @@ -106,27 +106,28 @@ end end end - local.get $2 - global.set $~lib/rt/stub/offset local.get $6 - local.get $7 - i32.store + global.set $~lib/rt/stub/offset + local.get $5 local.get $4 + i32.store + local.get $2 + local.tee $3 i32.const 4 i32.sub - local.tee $2 + local.tee $7 i32.const 0 i32.store offset=4 - local.get $2 + local.get $7 i32.const 0 i32.store offset=8 - local.get $2 + local.get $7 local.get $1 i32.store offset=12 - local.get $2 + local.get $7 local.get $0 i32.store offset=16 - local.get $4 + local.get $3 i32.const 16 i32.add ) diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index 0cb6c11f35..82fe1b35f4 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -1,16 +1,17 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $none_=>_i64 (func (result i64))) + (type $i64_=>_i32 (func (param i64) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) @@ -292,43 +293,42 @@ unreachable end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -337,28 +337,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -366,8 +366,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -378,14 +378,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -395,7 +395,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -405,32 +405,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -441,27 +441,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -1103,8 +1103,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -1112,11 +1110,12 @@ 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 $2 local.get $3 i32.const 4 @@ -1124,6 +1123,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -1135,17 +1135,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1351,7 +1351,6 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1359,6 +1358,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -1374,7 +1374,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1382,6 +1381,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -1436,11 +1436,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 4336 @@ -1464,11 +1464,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 4336 @@ -1613,13 +1613,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1659,10 +1659,10 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1671,7 +1671,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1680,6 +1679,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1693,12 +1693,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1711,7 +1711,6 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1720,6 +1719,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1727,11 +1727,19 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + local.get $0 i32.const 1073741820 i32.gt_u if @@ -1743,14 +1751,12 @@ unreachable end local.get $0 - local.tee $2 - local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $0 i32.const 19 i32.add i32.const -16 @@ -1763,6 +1769,8 @@ local.tee $1 i32.eqz if + memory.size + local.tee $2 local.get $0 i32.const 536870910 i32.lt_u @@ -1781,14 +1789,13 @@ local.get $0 end i32.const 4 - memory.size - local.tee $1 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1798,18 +1805,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1817,15 +1822,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -1853,12 +1858,12 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $3 + local.set $2 local.get $0 i32.const 4 i32.add @@ -1872,7 +1877,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 i32.const -4 i32.and local.get $0 @@ -1883,7 +1888,7 @@ if local.get $1 local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.and i32.or @@ -1900,12 +1905,12 @@ i32.const 1 i32.or i32.store - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1930,6 +1935,8 @@ i32.store end local.get $1 + i32.const 4 + i32.add ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) @@ -1974,12 +1981,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -2055,10 +2060,10 @@ i32.add i32.store i32.const 1144 - local.get $5 local.get $2 i32.const 8 i32.shl + local.get $5 i32.or local.get $3 i32.const 16 @@ -2089,6 +2094,8 @@ end return end + i32.const 0 + local.set $3 local.get $1 local.tee $2 local.get $2 @@ -2097,8 +2104,6 @@ i32.load offset=16 i32.add local.set $4 - i32.const 0 - local.set $3 loop $while-continue|0 local.get $2 local.get $4 @@ -2167,32 +2172,22 @@ end end local.get $3 + call $~lib/rt/tlsf/__alloc local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $3 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $5 + local.set $4 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $5 - local.get $3 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $4 local.get $2 + call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $3 i32.ne if i32.const 0 @@ -2203,10 +2198,10 @@ unreachable end i32.const 1136 - local.get $3 + local.get $2 i32.store i32.const 1140 - local.get $2 + local.get $3 i32.store local.get $0 i32.const 1136 @@ -2214,7 +2209,7 @@ i32.const 1144 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -2477,17 +2472,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -2547,15 +2542,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -2904,15 +2899,9 @@ local.get $0 i32.const 16 i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub local.tee $2 local.get $1 i32.store offset=12 @@ -3059,44 +3048,44 @@ local.get $7 i32.le_u if - local.get $2 local.get $1 i32.load i32.const -2048144777 i32.mul + local.get $2 i32.add i32.const 13 i32.rotl i32.const -1640531535 i32.mul local.set $2 - local.get $4 local.get $1 i32.load offset=4 i32.const -2048144777 i32.mul + local.get $4 i32.add i32.const 13 i32.rotl i32.const -1640531535 i32.mul local.set $4 - local.get $6 local.get $1 i32.load offset=8 i32.const -2048144777 i32.mul + local.get $6 i32.add i32.const 13 i32.rotl i32.const -1640531535 i32.mul local.set $6 - local.get $5 local.get $1 i32.load offset=12 i32.const -2048144777 i32.mul + local.get $5 i32.add i32.const 13 i32.rotl @@ -3110,7 +3099,6 @@ br $while-continue|0 end end - local.get $3 local.get $2 i32.const 1 i32.rotl @@ -3126,6 +3114,7 @@ i32.const 18 i32.rotl i32.add + local.get $3 i32.add else local.get $3 @@ -3144,11 +3133,11 @@ local.get $4 i32.le_u if - local.get $2 local.get $1 i32.load i32.const -1028477379 i32.mul + local.get $2 i32.add i32.const 17 i32.rotl @@ -3171,11 +3160,11 @@ local.get $1 i32.gt_u if - local.get $2 local.get $1 i32.load8_u i32.const 374761393 i32.mul + local.get $2 i32.add i32.const 11 i32.rotl @@ -3190,23 +3179,23 @@ end end local.get $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $0 - local.get $0 i32.const 13 i32.shr_u + local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 - local.get $0 i32.const 16 i32.shr_u + local.get $0 i32.xor else i32.const 0 @@ -3390,13 +3379,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -3425,13 +3414,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -3451,12 +3440,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -3466,12 +3455,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -3479,36 +3468,287 @@ i32.store16 end ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~lib/number/U64#toString (param $0 i64) (result i32) (local $1 i32) (local $2 i32) - block $invalid - block $~lib/map/Map<~lib/string/String,u64> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,u64> $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 6000 + local.set $2 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $3 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + loop $while-continue|0 + local.get $0 + i64.const 100000000 + i64.ge_u + if + local.get $2 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i64.const 100000000 + i64.div_u + local.tee $0 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 6012 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 6012 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $2 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 6012 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 6012 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $2 + local.get $0 + i32.wrap_i64 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + block $~lib/map/Map<~lib/string/String,u64> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,u64> $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit local.get $0 i32.load offset=8 local.tee $2 @@ -3666,11 +3906,11 @@ i32.shl i32.add i32.load - local.set $0 + local.set $5 loop $while-continue|0 - local.get $0 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=16 local.tee $6 i32.const 1 @@ -3679,34 +3919,35 @@ i32.const 0 else global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.load - local.tee $2 + local.tee $4 i32.store block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 1 local.get $1 - local.get $2 + local.tee $2 + local.get $4 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $1 - i32.const 0 local.get $2 + i32.const 0 + local.get $4 select i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $2 + local.get $4 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u local.tee $3 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -3716,18 +3957,16 @@ br_if $__inlined_func$~lib/string/String.__eq drop block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $2 - local.tee $4 + local.get $4 i32.const 7 i32.and - local.get $1 - local.tee $5 + local.get $2 i32.const 7 i32.and i32.or i32.const 1 local.get $3 - local.tee $2 + local.tee $0 i32.const 4 i32.ge_u select @@ -3736,7 +3975,7 @@ loop $do-continue|0 local.get $4 i64.load - local.get $5 + local.get $2 i64.load i64.eq if @@ -3744,14 +3983,14 @@ i32.const 8 i32.add local.set $4 - local.get $5 + local.get $2 i32.const 8 i32.add - local.set $5 - local.get $2 + local.set $2 + local.get $0 i32.const 4 i32.sub - local.tee $2 + local.tee $0 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -3759,23 +3998,23 @@ end end loop $while-continue|1 - local.get $2 + local.get $0 local.tee $3 i32.const 1 i32.sub - local.set $2 + local.set $0 local.get $3 if - local.get $4 + local.get $2 i32.load16_u local.tee $3 - local.get $5 + local.get $4 i32.load16_u local.tee $7 i32.ne if - local.get $3 local.get $7 + local.get $3 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -3783,10 +4022,10 @@ i32.const 2 i32.add local.set $4 - local.get $5 + local.get $2 i32.const 2 i32.add - local.set $5 + local.set $2 br $while-continue|1 end end @@ -3800,13 +4039,13 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $5 return end local.get $6 i32.const -2 i32.and - local.set $0 + local.set $5 br $while-continue|0 end end @@ -3880,34 +4119,31 @@ i32.const 7972 i32.lt_s br_if $folding-inner0 - local.get $0 - local.set $2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store local.get $1 - local.tee $0 - local.get $2 - local.get $2 + local.get $0 + local.get $0 call $~lib/util/hash/HASH<~lib/string/String> local.tee $4 call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $1 + local.tee $2 if - local.get $1 + local.get $2 local.get $3 i64.store offset=8 else - local.get $0 + local.get $1 i32.load offset=16 - local.get $0 + local.get $1 i32.load offset=12 i32.eq if - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=20 - local.get $0 + local.get $1 i32.load offset=12 i32.const 3 i32.mul @@ -3915,10 +4151,10 @@ i32.div_s i32.lt_s if (result i32) - local.get $0 + local.get $1 i32.load offset=4 else - local.get $0 + local.get $1 i32.load offset=4 i32.const 1 i32.shl @@ -3928,43 +4164,43 @@ call $~lib/map/Map<~lib/string/String,u64>#rehash end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=8 - local.tee $5 + local.tee $2 i32.store - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=16 - local.tee $1 + local.tee $5 i32.const 1 i32.add i32.store offset=16 + local.get $2 local.get $5 - local.get $1 i32.const 24 i32.mul i32.add - local.tee $1 - local.get $2 + local.tee $2 + local.get $0 i32.store + local.get $1 local.get $0 - local.get $2 i32.const 1 call $~lib/rt/itcms/__link - local.get $1 + local.get $2 local.get $3 i64.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 + local.get $2 local.get $1 - local.get $0 i32.load local.get $4 - local.get $0 + local.get $1 i32.load offset=4 i32.and i32.const 2 @@ -3974,7 +4210,7 @@ i32.load i32.store offset=16 local.get $0 - local.get $1 + local.get $2 i32.store end global.get $~lib/memory/__stack_pointer @@ -3997,325 +4233,83 @@ (func $~lib/console/timeLogImpl (param $0 i32) (local $1 i32) (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - global.get $~lib/console/timers - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $1 - i32.eqz - if - i32.const 5696 - i32.const 5760 - i32.const 105 - i32.const 17 - call $~lib/wasi/index/abort - unreachable - end - local.get $1 - i64.load offset=8 - local.set $2 - call $~lib/process/process.hrtime - local.get $2 - i64.sub - i64.const 1000000 - i64.div_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 6000 - local.set $3 - br $__inlined_func$~lib/util/number/utoa64 - end - local.get $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $4 - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $2 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $2 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $2 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - loop $while-continue|0 - local.get $2 - i64.const 100000000 - i64.ge_u - if - local.get $3 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $2 - i64.const 100000000 - i64.div_u - local.tee $2 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.tee $4 - i32.const 10000 - i32.rem_u - local.tee $6 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 6012 - i32.add - i64.load32_u - local.get $6 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 6012 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - local.get $3 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 10000 - i32.div_u - local.tee $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 6012 - i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 6012 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $3 - local.get $2 - i32.wrap_i64 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $5 - local.get $3 - i32.store offset=4 - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 7584 - i32.store offset=8 - i32.const 1 - i32.const 7584 - call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 i32.const 1 - local.get $3 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=8 i32.const 1 - i32.const 7616 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return + call $~lib/wasi/index/abort + unreachable end - i32.const 24384 - i32.const 24432 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $1 + i32.eqz + if + i32.const 5696 + i32.const 5760 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i64.load offset=8 + local.set $2 + call $~lib/process/process.hrtime + local.get $2 + i64.sub + i64.const 1000000 + i64.div_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/number/U64#toString + local.tee $1 + i32.store offset=4 i32.const 1 + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 7584 + i32.store offset=8 i32.const 1 - call $~lib/wasi/index/abort - unreachable + i32.const 7584 + call $~lib/process/writeString + i32.const 1 + local.get $1 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=8 + i32.const 1 + i32.const 7616 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/console/console.timeLog (param $0 i32) (local $1 i32) diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index 4ca6d149ce..e4057127a2 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -1,10 +1,10 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result 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 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -249,43 +249,42 @@ unreachable end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -294,28 +293,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -323,8 +322,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -335,14 +334,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -352,7 +351,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -362,32 +361,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -398,27 +397,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -978,8 +977,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -987,11 +984,12 @@ 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 $2 local.get $3 i32.const 4 @@ -999,6 +997,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -1010,17 +1009,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1226,7 +1225,6 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1234,6 +1232,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -1249,7 +1248,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1257,6 +1255,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -1311,11 +1310,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -1339,11 +1338,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -1516,12 +1515,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1555,17 +1552,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1625,15 +1622,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1759,13 +1756,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1805,10 +1802,10 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1817,7 +1814,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1826,6 +1822,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1839,12 +1836,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1857,7 +1854,6 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1866,6 +1862,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1873,11 +1870,19 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + local.get $0 i32.const 1073741820 i32.gt_u if @@ -1889,14 +1894,12 @@ unreachable end local.get $0 - local.tee $2 - local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $0 i32.const 19 i32.add i32.const -16 @@ -1909,6 +1912,8 @@ local.tee $1 i32.eqz if + memory.size + local.tee $2 local.get $0 i32.const 536870910 i32.lt_u @@ -1927,14 +1932,13 @@ local.get $0 end i32.const 4 - memory.size - local.tee $1 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1944,18 +1948,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1963,15 +1965,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -1999,12 +2001,12 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $3 + local.set $2 local.get $0 i32.const 4 i32.add @@ -2018,7 +2020,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 i32.const -4 i32.and local.get $0 @@ -2029,7 +2031,7 @@ if local.get $1 local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.and i32.or @@ -2046,12 +2048,12 @@ i32.const 1 i32.or i32.store - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -2076,6 +2078,8 @@ i32.store end local.get $1 + i32.const 4 + i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -2315,15 +2319,9 @@ local.get $0 i32.const 16 i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub local.tee $2 local.get $1 i32.store offset=12 @@ -2782,13 +2780,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -2817,13 +2815,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -2843,12 +2841,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -2858,12 +2856,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -3109,29 +3107,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -3153,25 +3149,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3244,25 +3240,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3331,25 +3327,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3389,143 +3385,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3552,63 +3534,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3635,23 +3611,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -4074,6 +4048,8 @@ end local.get $0 local.set $1 + i32.const 0 + local.set $2 local.get $0 local.get $0 i32.const 20 @@ -4081,8 +4057,6 @@ i32.load offset=16 i32.add local.set $3 - i32.const 0 - local.set $2 loop $while-continue|0 local.get $1 local.get $3 @@ -4151,32 +4125,22 @@ end end local.get $2 + call $~lib/rt/tlsf/__alloc local.set $1 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $2 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $4 + local.set $3 i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $2 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $3 local.get $1 + call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $2 i32.ne if i32.const 0 @@ -4187,18 +4151,18 @@ unreachable end i32.const 6672 - local.get $2 - i32.store - i32.const 6676 local.get $1 i32.store + i32.const 6676 + local.get $2 + i32.store i32.const 1 i32.const 6672 i32.const 1 i32.const 6680 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $2 + local.get $1 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -4214,10 +4178,10 @@ end ) (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1472 i32.const 1680 @@ -4268,351 +4232,329 @@ ) (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 6900 + i32.lt_s + if + i32.const 23312 + i32.const 23360 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 6656 + i32.store + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.log (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6900 + i32.lt_s + if + i32.const 23312 + i32.const 23360 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 6784 + i32.store + i32.const 6784 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std-wasi/crypto + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 23284 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 i32.store - local.get $2 - i32.const 6656 + i32.const 1400 + i32.const 1392 i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $0 - local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $0 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 + local.get $0 + i32.const 8 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 8 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std-wasi/crypto/ab + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/ab + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array.wrap + global.set $std-wasi/crypto/buf + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 4768 + i32.store offset=4 + local.get $0 + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/typedarray/Uint8Array#slice + global.set $std-wasi/crypto/b1 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/ab + local.tee $0 + i32.store + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/typedarray/Uint8Array.wrap + global.set $std-wasi/crypto/buf + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 4768 + i32.store offset=4 + local.get $0 + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/typedarray/Uint8Array#slice + global.set $std-wasi/crypto/b2 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/ab + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/typedarray/Uint8Array.wrap + global.set $std-wasi/crypto/buf + loop $for-loop|0 + local.get $1 + i32.const 4 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 4848 + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array#__get local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/b1 + local.tee $2 + i32.store local.get $2 - i32.eqz + local.get $1 + call $~lib/typedarray/Uint8Array#__get + local.get $0 + i32.ne if - block $__inlined_func$~lib/util/number/utoa32 (result i32) - local.get $3 - i32.load8_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 6900 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 5072 - br $__inlined_func$~lib/util/number/utoa32 - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $0 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $1 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - end - local.set $0 - br $folding-inner0 + i32.const 0 + i32.const 6816 + i32.const 17 + i32.const 3 + call $~lib/wasi/index/abort + unreachable end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 6652 - i32.load + local.get $1 i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - i32.mul - i32.const 10 i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new + local.set $1 + br $for-loop|0 + end + end + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf local.tee $0 i32.store - loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $4 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 6656 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 local.get $0 local.get $1 - i32.const 1 - i32.shl + i32.const 4 i32.add + call $~lib/typedarray/Uint8Array#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/b2 + local.tee $2 + i32.store local.get $2 - local.get $3 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered local.get $1 - i32.add - local.tee $1 - i32.gt_s + call $~lib/typedarray/Uint8Array#__get + local.get $0 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 6900 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#substring - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $1 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $5 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $3 - i32.sub - local.tee $4 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 4848 - local.set $0 - br $__inlined_func$~lib/string/String#substring - end - i32.const 0 - local.get $5 - local.get $2 - i32.const 1 - i32.shl - i32.eq - local.get $3 - select - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#substring - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $3 - i32.add - local.get $4 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 - end - br $folding-inner0 + i32.const 6816 + i32.const 20 + i32.const 3 + call $~lib/wasi/index/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray + local.set $1 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 23312 @@ -4622,8 +4564,9 @@ call $~lib/wasi/index/abort unreachable ) - (func $~lib/console/console.log (param $0 i32) - global.get $~lib/memory/__stack_pointer + (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4641,278 +4584,401 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $1 local.get $0 - call $~lib/process/writeString + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $3 + i32.gt_u + if + i32.const 1472 + i32.const 1680 + i32.const 1872 + i32.const 5 + call $~lib/wasi/index/abort + unreachable + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + i32.const -1 + i32.eq + if (result i32) + local.get $3 + local.get $1 + i32.sub + else + i32.const 1168 + i32.const 1680 + i32.const 1881 + i32.const 7 + call $~lib/wasi/index/abort + unreachable + end + local.set $2 + else + local.get $3 + local.get $1 + local.get $2 + i32.add + i32.lt_s + if + i32.const 1168 + i32.const 1680 + i32.const 1886 + i32.const 7 + call $~lib/wasi/index/abort + unreachable + end + end global.get $~lib/memory/__stack_pointer - i32.const 6784 + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $3 i32.store - i32.const 6784 - call $~lib/process/writeString + local.get $3 + local.get $0 + i32.store + local.get $3 + local.get $0 + call $~lib/rt/itcms/__link + local.get $3 + local.get $2 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $1 + i32.add + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $start:std-wasi/crypto - (local $0 i32) - (local $1 i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 6900 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 23284 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/pinSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/itcms/toSpace - i32.const 1572 - i32.const 1568 - i32.store - i32.const 1576 - i32.const 1568 - i32.store - i32.const 1568 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 8 - call $~lib/memory/memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $std-wasi/crypto/ab + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/ab - local.tee $0 - i32.store - local.get $0 i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array.wrap - global.set $std-wasi/crypto/buf - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - call $~lib/crypto/crypto.getRandomValues - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4768 - i32.store offset=4 - local.get $0 - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Uint8Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - call $~lib/typedarray/Uint8Array#slice - global.set $std-wasi/crypto/b1 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/ab - local.tee $0 - i32.store - local.get $0 - i32.const 4 - i32.const 4 - call $~lib/typedarray/Uint8Array.wrap - global.set $std-wasi/crypto/buf - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - call $~lib/crypto/crypto.getRandomValues - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4768 - i32.store offset=4 - local.get $0 - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Uint8Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - call $~lib/typedarray/Uint8Array#slice - global.set $std-wasi/crypto/b2 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/ab - local.tee $0 i32.store + local.get $1 i32.const 1 - global.set $~argumentsLength - local.get $0 + i32.sub + local.tee $3 i32.const 0 - i32.const -1 - call $~lib/typedarray/Uint8Array.wrap - global.set $std-wasi/crypto/buf - loop $for-loop|0 - local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.lt_s + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4848 + return + end + block $folding-inner0 + local.get $3 + i32.eqz if - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - local.set $0 + i32.load8_u + local.set $2 global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/b1 - local.tee $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6900 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - local.get $0 - i32.ne + block $__inlined_func$~lib/util/number/utoa32 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5072 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 6652 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s if - i32.const 0 - i32.const 6816 - i32.const 17 - i32.const 3 - call $~lib/wasi/index/abort - unreachable + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 6656 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 end - end - i32.const 0 - local.set $1 - loop $for-loop|1 + local.get $6 local.get $1 - i32.const 4 - i32.lt_s + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - local.get $1 i32.const 4 - i32.add - call $~lib/typedarray/Uint8Array#__get - local.set $0 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/b2 - local.tee $2 + i32.const 6900 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - local.get $0 - i32.ne - if + block $__inlined_func$~lib/string/String#substring i32.const 0 - i32.const 6816 + local.get $1 + local.tee $0 i32.const 20 - i32.const 3 - call $~lib/wasi/index/abort - unreachable + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $1 + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $2 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4848 + local.set $0 + br $__inlined_func$~lib/string/String#substring + end + i32.const 0 + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + local.get $2 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#substring + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + i32.add + local.get $3 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + br $folding-inner0 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end i32.const 23312 @@ -4922,102 +4988,6 @@ call $~lib/wasi/index/abort unreachable ) - (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 6900 - i32.lt_s - if - i32.const 23312 - i32.const 23360 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $3 - i32.gt_u - if - i32.const 1472 - i32.const 1680 - i32.const 1872 - i32.const 5 - call $~lib/wasi/index/abort - unreachable - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - i32.const -1 - i32.eq - if (result i32) - local.get $3 - local.get $1 - i32.sub - else - i32.const 1168 - i32.const 1680 - i32.const 1881 - i32.const 7 - call $~lib/wasi/index/abort - unreachable - end - local.set $2 - else - local.get $3 - local.get $1 - local.get $2 - i32.add - i32.lt_s - if - i32.const 1168 - i32.const 1680 - i32.const 1886 - i32.const 7 - call $~lib/wasi/index/abort - unreachable - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - i32.store - local.get $3 - local.get $0 - call $~lib/rt/itcms/__link - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $0 - local.get $1 - i32.add - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) (func $~lib/typedarray/Uint8Array#slice (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -5030,32 +5000,43 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store i32.const 0 local.get $0 i32.load offset=8 - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.const 0 i32.gt_s select - local.set $6 + local.set $5 + local.get $1 local.get $5 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $6 + local.set $2 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -5066,26 +5047,15 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - local.get $2 - local.get $6 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $7 - local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -5111,7 +5081,7 @@ local.get $1 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -5123,47 +5093,47 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store offset=4 - local.get $4 local.get $3 + local.get $2 call $~lib/memory/memory.fill local.get $1 - local.get $4 + local.get $3 i32.store local.get $1 - local.get $4 + local.get $3 call $~lib/rt/itcms/__link local.get $1 - local.get $4 + local.get $3 i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $7 local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 local.get $1 i32.store local.get $1 i32.load offset=4 - local.get $6 + local.get $5 local.get $0 i32.load offset=4 i32.add - local.get $7 + local.get $6 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index 3bb4f8507a..5921deadda 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -279,43 +279,42 @@ unreachable end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -324,28 +323,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -353,8 +352,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -365,14 +364,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -382,7 +381,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -392,32 +391,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -428,27 +427,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -1090,8 +1089,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -1099,11 +1096,12 @@ 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 $2 local.get $3 i32.const 4 @@ -1111,6 +1109,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -1122,17 +1121,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1338,7 +1337,6 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1346,6 +1344,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -1361,7 +1360,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1369,6 +1367,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -1423,11 +1422,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 4288 @@ -1451,11 +1450,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 4288 @@ -1600,13 +1599,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1646,10 +1645,10 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1658,7 +1657,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1667,6 +1665,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1680,12 +1679,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1698,7 +1697,6 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1707,6 +1705,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1714,11 +1713,19 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + local.get $0 i32.const 1073741820 i32.gt_u if @@ -1730,14 +1737,12 @@ unreachable end local.get $0 - local.tee $2 - local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $0 i32.const 19 i32.add i32.const -16 @@ -1750,6 +1755,8 @@ local.tee $1 i32.eqz if + memory.size + local.tee $2 local.get $0 i32.const 536870910 i32.lt_u @@ -1768,14 +1775,13 @@ local.get $0 end i32.const 4 - memory.size - local.tee $1 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1785,18 +1791,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1804,15 +1808,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -1840,12 +1844,12 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $3 + local.set $2 local.get $0 i32.const 4 i32.add @@ -1859,7 +1863,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 i32.const -4 i32.and local.get $0 @@ -1870,7 +1874,7 @@ if local.get $1 local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.and i32.or @@ -1887,12 +1891,12 @@ i32.const 1 i32.or i32.store - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1917,6 +1921,8 @@ i32.store end local.get $1 + i32.const 4 + i32.add ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) @@ -1961,12 +1967,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -2078,6 +2082,8 @@ end local.get $0 local.set $1 + i32.const 0 + local.set $2 local.get $0 local.get $0 i32.const 20 @@ -2085,8 +2091,6 @@ i32.load offset=16 i32.add local.set $3 - i32.const 0 - local.set $2 loop $while-continue|0 local.get $1 local.get $3 @@ -2155,32 +2159,22 @@ end end local.get $2 + call $~lib/rt/tlsf/__alloc local.set $1 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $2 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $4 + local.set $3 i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $2 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $3 local.get $1 + call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $2 i32.ne if i32.const 0 @@ -2191,10 +2185,10 @@ unreachable end i32.const 1088 - local.get $2 + local.get $1 i32.store i32.const 1092 - local.get $1 + local.get $2 i32.store i32.const 1 i32.const 1088 @@ -2202,7 +2196,7 @@ i32.const 1096 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $2 + local.get $1 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -2495,17 +2489,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -2565,15 +2559,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -2922,15 +2916,9 @@ local.get $0 i32.const 16 i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub local.tee $2 local.get $1 i32.store offset=12 @@ -3200,29 +3188,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -3244,25 +3230,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3335,25 +3321,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3422,25 +3408,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3480,143 +3466,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3643,63 +3615,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3726,23 +3692,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3987,7 +3951,6 @@ (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.const 20 i32.sub @@ -3997,7 +3960,8 @@ i32.and i32.const 16 i32.sub - i32.le_u + local.get $1 + i32.ge_u if local.get $2 local.get $1 @@ -4014,10 +3978,10 @@ local.get $1 local.get $2 i32.load offset=16 - local.tee $0 - local.get $0 + local.tee $2 local.get $1 - i32.gt_u + local.get $2 + i32.lt_u select call $~lib/memory/memory.copy local.get $3 @@ -4106,10 +4070,10 @@ ) (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -4266,44 +4230,44 @@ local.get $7 i32.le_u if - local.get $2 local.get $1 i32.load i32.const -2048144777 i32.mul + local.get $2 i32.add i32.const 13 i32.rotl i32.const -1640531535 i32.mul local.set $2 - local.get $4 local.get $1 i32.load offset=4 i32.const -2048144777 i32.mul + local.get $4 i32.add i32.const 13 i32.rotl i32.const -1640531535 i32.mul local.set $4 - local.get $6 local.get $1 i32.load offset=8 i32.const -2048144777 i32.mul + local.get $6 i32.add i32.const 13 i32.rotl i32.const -1640531535 i32.mul local.set $6 - local.get $5 local.get $1 i32.load offset=12 i32.const -2048144777 i32.mul + local.get $5 i32.add i32.const 13 i32.rotl @@ -4317,7 +4281,6 @@ br $while-continue|0 end end - local.get $3 local.get $2 i32.const 1 i32.rotl @@ -4333,6 +4296,7 @@ i32.const 18 i32.rotl i32.add + local.get $3 i32.add else local.get $3 @@ -4351,11 +4315,11 @@ local.get $4 i32.le_u if - local.get $2 local.get $1 i32.load i32.const -1028477379 i32.mul + local.get $2 i32.add i32.const 17 i32.rotl @@ -4378,11 +4342,11 @@ local.get $1 i32.gt_u if - local.get $2 local.get $1 i32.load8_u i32.const 374761393 i32.mul + local.get $2 i32.add i32.const 11 i32.rotl @@ -4397,23 +4361,23 @@ end end local.get $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $0 - local.get $0 i32.const 13 i32.shr_u + local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 - local.get $0 i32.const 16 i32.shr_u + local.get $0 i32.xor else i32.const 0 @@ -4434,13 +4398,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -4469,13 +4433,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -4495,12 +4459,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -4510,12 +4474,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -4531,14 +4495,6 @@ i64.const 100000000 i64.ge_u if - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add local.get $1 local.get $1 i64.const 100000000 @@ -4550,8 +4506,20 @@ i32.wrap_i64 local.tee $3 i32.const 10000 + i32.div_u + local.set $4 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 10000 i32.rem_u - local.tee $4 + local.tee $3 i32.const 100 i32.div_u i32.const 2 @@ -4559,7 +4527,7 @@ i32.const 5708 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -4571,18 +4539,15 @@ i64.shl i64.or i64.store - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add - local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 + local.get $4 i32.const 100 i32.div_u i32.const 2 @@ -4590,7 +4555,7 @@ i32.const 5708 i32.add i64.load32_u - local.get $3 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -4641,34 +4606,35 @@ return end local.get $0 - i32.load offset=4 local.tee $1 + i32.load offset=4 + local.tee $2 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 - local.get $1 local.get $2 + local.get $3 i32.lt_u if - local.get $1 + local.get $2 i32.load - local.tee $3 + local.tee $0 if - local.get $3 + local.get $0 call $~lib/rt/itcms/__visit end - local.get $1 + local.get $2 i32.const 4 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end - local.get $0 + local.get $1 i32.load call $~lib/rt/itcms/__visit return @@ -4917,17 +4883,7 @@ i32.load i32.add local.tee $8 - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $4 local.get $0 local.get $4 @@ -4946,7 +4902,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4998,7 +4954,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 local.get $0 local.tee $1 i32.store @@ -5021,7 +4977,7 @@ local.get $4 i32.sub call $~lib/string/String.UTF8.decodeUnsafe - local.tee $2 + local.tee $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 5168 @@ -5038,32 +4994,32 @@ br_if $__inlined_func$~lib/string/String#indexOf i32.const -1 local.set $0 - local.get $2 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.eqz br_if $__inlined_func$~lib/string/String#indexOf i32.const 0 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 0 i32.gt_s select local.set $0 - local.get $3 + local.get $2 local.get $6 i32.sub - local.set $3 + local.set $2 loop $for-loop|00 local.get $0 - local.get $3 + local.get $2 i32.le_s if - local.get $2 + local.get $3 local.get $0 i32.const 5168 local.get $6 @@ -5084,15 +5040,15 @@ i32.const -1 i32.xor if - local.get $2 + local.get $3 i32.const 0 local.get $0 call $~lib/string/String#substring - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 local.get $2 + i32.store offset=8 + local.get $3 local.get $0 i32.const 1 i32.add @@ -5103,7 +5059,7 @@ local.get $0 i32.store offset=12 local.get $1 - local.get $3 + local.get $2 local.get $0 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set else @@ -5111,7 +5067,7 @@ i32.const 5200 i32.store offset=12 local.get $1 - local.get $2 + local.get $3 i32.const 5200 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set end @@ -5147,16 +5103,15 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 7404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -5223,7 +5178,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -5244,35 +5199,25 @@ end i32.const 1088 i32.load - local.tee $6 + local.tee $4 i32.const 2 i32.shl - local.tee $4 + local.tee $5 i32.const 1092 i32.load i32.add - local.tee $3 - local.set $1 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + local.tee $6 + call $~lib/rt/tlsf/__alloc + local.tee $1 local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $7 - local.get $4 - local.get $7 + local.get $5 i32.add call $~lib/bindings/wasi_snapshot_preview1/args_get - local.tee $1 + local.tee $5 i32.const 65535 i32.and if - local.get $1 + local.get $5 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 i32.const 73 @@ -5281,49 +5226,49 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $4 + local.tee $5 i32.store loop $for-loop|0 - local.get $0 - local.get $6 + local.get $3 + local.get $4 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $7 - local.get $0 + local.get $1 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $1 - local.get $1 - local.get $3 - i32.add + local.tee $7 + local.get $6 local.get $7 + i32.add + local.get $1 i32.sub call $~lib/string/String.UTF8.decodeUnsafe - local.tee $1 + local.tee $7 i32.store offset=4 - local.get $4 - local.get $0 - local.get $1 + local.get $5 + local.get $3 + local.get $7 call $~lib/array/Array<~lib/string/String>#__set - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|0 end end - local.get $7 + local.get $1 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 global.set $~lib/process/process.argv global.get $~lib/process/process.argv global.set $std-wasi/process/argv @@ -5340,16 +5285,16 @@ i32.load offset=12 local.set $3 loop $for-loop|00 + local.get $0 local.get $3 - local.get $5 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std-wasi/process/argv local.tee $1 i32.store offset=4 local.get $1 - local.get $5 + local.get $0 call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer @@ -5357,10 +5302,10 @@ i32.store local.get $1 call $~lib/console/console.log - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|00 end end @@ -5369,83 +5314,85 @@ global.get $~lib/process/process.env global.set $std-wasi/process/env global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 global.get $std-wasi/process/env local.tee $3 i32.store i32.const 0 + local.set $1 + i32.const 0 local.set $0 - local.get $1 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 7404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 i64.const 0 i64.store local.get $3 i32.load offset=8 - local.set $4 - local.get $1 + local.set $5 + local.get $4 local.get $3 i32.load offset=16 - local.tee $3 + local.tee $4 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $6 + local.tee $3 i32.store - loop $for-loop|002 - local.get $3 - local.get $8 - i32.gt_s + loop $for-loop|01 + local.get $1 + local.get $4 + i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $1 i32.const 12 i32.mul i32.add - local.tee $1 + local.tee $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $6 i32.load - local.tee $1 + local.tee $6 i32.store offset=4 - local.get $6 + local.get $3 local.get $0 - local.get $1 + local.get $6 call $~lib/array/Array<~lib/string/String>#__set local.get $0 i32.const 1 i32.add local.set $0 end - local.get $8 + local.get $1 i32.const 1 i32.add - local.set $8 - br $for-loop|002 + local.set $1 + br $for-loop|01 end end - local.get $6 + local.get $3 local.get $0 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $3 global.set $std-wasi/process/envKeys global.get $~lib/memory/__stack_pointer i32.const 5232 @@ -5453,36 +5400,36 @@ i32.const 5232 call $~lib/console/console.log i32.const 0 - local.set $5 + local.set $0 global.get $~lib/memory/__stack_pointer global.get $std-wasi/process/envKeys local.tee $1 i32.store local.get $1 i32.load offset=12 - local.set $4 + local.set $3 loop $for-loop|1 - local.get $4 - local.get $5 - i32.gt_s + local.get $0 + local.get $3 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $3 - global.get $std-wasi/process/envKeys local.tee $1 + global.get $std-wasi/process/envKeys + local.tee $4 i32.store - local.get $3 local.get $1 - local.get $5 + local.get $4 + local.get $0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $3 + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 5280 i32.store offset=4 i32.const 5280 call $~lib/process/writeString - local.get $3 + local.get $1 call $~lib/console/console.log global.get $~lib/memory/__stack_pointer i32.const 5312 @@ -5491,11 +5438,11 @@ call $~lib/process/writeString global.get $~lib/memory/__stack_pointer global.get $std-wasi/process/env - local.tee $1 + local.tee $4 i32.store offset=4 + local.get $4 + local.get $1 local.get $1 - local.get $3 - local.get $3 call $~lib/util/hash/HASH<~lib/string/String> call $~lib/map/Map<~lib/string/String,~lib/string/String>#find local.tee $1 @@ -5515,10 +5462,10 @@ i32.store local.get $1 call $~lib/console/console.log - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|1 end end @@ -5531,11 +5478,11 @@ i64.const 1000000 i32.const 1088 call $~lib/bindings/wasi_snapshot_preview1/clock_time_get - local.tee $1 + local.tee $0 i32.const 65535 i32.and if - local.get $1 + local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 i32.const 53 @@ -5555,7 +5502,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -5579,7 +5526,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $1 select local.tee $2 i64.const 4294967295 @@ -5589,55 +5536,55 @@ local.get $2 i32.wrap_i64 local.tee $3 - local.tee $1 + local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $4 i32.const 1 i32.shl i32.const 1 @@ -5646,7 +5593,7 @@ i32.store local.get $0 local.get $3 - local.get $1 + local.get $4 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -5700,9 +5647,9 @@ i32.add end end - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -5711,10 +5658,10 @@ i32.store local.get $0 local.get $2 - local.get $1 + local.get $3 call $~lib/util/number/utoa64_dec_lut end - local.get $4 + local.get $1 if local.get $0 i32.const 45 @@ -5739,11 +5686,11 @@ i64.const 0 i32.const 1088 call $~lib/bindings/wasi_snapshot_preview1/clock_time_get - local.tee $1 + local.tee $0 i32.const 65535 i32.and if - local.get $1 + local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 i32.const 59 @@ -5761,7 +5708,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -5785,47 +5732,47 @@ local.get $2 i32.wrap_i64 local.tee $3 - local.tee $1 + local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -5925,17 +5872,17 @@ call $~lib/bindings/wasi_snapshot_preview1/proc_exit i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 - local.get $3 + local.get $0 i32.const 20 i32.sub i32.load offset=16 local.set $1 i32.const 1088 - local.get $3 + local.get $0 i32.store i32.const 1092 local.get $1 @@ -5945,11 +5892,11 @@ i32.const 1 i32.const 1096 call $~lib/bindings/wasi_snapshot_preview1/fd_read - local.tee $1 + local.tee $0 i32.const 65535 i32.and if - local.get $1 + local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 i32.const 142 diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 35d02b54c5..d15b6f0ac5 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -56,10 +56,10 @@ (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1200 i32.const 1264 @@ -68,17 +68,17 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 i32.load offset=4 - local.get $1 i32.add i32.load8_s ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1200 i32.const 1264 @@ -432,8 +432,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -441,11 +439,12 @@ 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 $2 local.get $3 i32.const 4 @@ -453,6 +452,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -464,17 +464,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -680,7 +680,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -688,6 +687,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -703,7 +703,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -711,6 +710,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -765,11 +765,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1744 @@ -793,11 +793,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1744 @@ -957,17 +957,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1027,15 +1027,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1163,12 +1163,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1208,13 +1206,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1254,10 +1252,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1266,7 +1264,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1275,6 +1272,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1288,12 +1286,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1306,7 +1304,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1315,6 +1312,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1345,12 +1343,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1366,14 +1364,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1387,15 +1385,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1407,13 +1405,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1421,19 +1418,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1441,17 +1440,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1461,18 +1459,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1480,18 +1476,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1502,8 +1498,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1516,13 +1512,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1535,54 +1531,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1592,37 +1588,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1630,20 +1626,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1654,10 +1650,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1674,7 +1670,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1686,38 +1682,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1730,20 +1726,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1766,49 +1762,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1884,48 +1880,10 @@ i32.const 1 call $~lib/rt/itcms/__link ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~lib/array/Array~visit (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $std/array-literal/RefWithCtor - block $std/array-literal/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $std/array-literal/Ref $folding-inner1 $std/array-literal/RefWithCtor $folding-inner1 $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end local.get $0 i32.load offset=4 local.tee $1 @@ -1958,6 +1916,60 @@ i32.load call $~lib/rt/itcms/__visit ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $std/array-literal/RefWithCtor + block $~lib/array/Array + block $std/array-literal/Ref + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) (func $~start call $start:std/array-literal ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index ef8e31f4b2..b686cca794 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -20,7 +20,7 @@ (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i64_=>_none (func (param i64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_i64_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i64 i32 i64 i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) @@ -1031,8 +1031,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -1040,11 +1038,12 @@ 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 $2 local.get $3 i32.const 4 @@ -1052,6 +1051,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -1063,17 +1063,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1279,7 +1279,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1287,6 +1286,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -1302,7 +1302,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1310,6 +1309,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -1364,11 +1364,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1488 @@ -1392,11 +1392,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1488 @@ -1569,12 +1569,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1608,17 +1606,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1678,15 +1676,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1812,13 +1810,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1858,10 +1856,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1870,7 +1868,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1879,6 +1876,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1892,12 +1890,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1910,7 +1908,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1919,6 +1916,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1926,11 +1924,19 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + local.get $0 i32.const 1073741820 i32.gt_u if @@ -1942,14 +1948,12 @@ unreachable end local.get $0 - local.tee $2 - local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $0 i32.const 19 i32.add i32.const -16 @@ -1962,6 +1966,8 @@ local.tee $1 i32.eqz if + memory.size + local.tee $2 local.get $0 i32.const 536870910 i32.lt_u @@ -1980,14 +1986,13 @@ local.get $0 end i32.const 4 - memory.size - local.tee $1 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1997,18 +2002,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -2016,15 +2019,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -2052,12 +2055,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $3 + local.set $2 local.get $0 i32.const 4 i32.add @@ -2071,7 +2074,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const -4 i32.and local.get $0 @@ -2082,7 +2085,7 @@ if local.get $1 local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.and i32.or @@ -2099,12 +2102,12 @@ i32.const 1 i32.or i32.store - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -2129,6 +2132,8 @@ i32.store end local.get $1 + i32.const 4 + i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2276,19 +2281,19 @@ i32.and i32.const 24 i32.add - local.tee $3 + local.tee $5 i32.add local.set $1 local.get $2 - local.get $3 + local.get $5 i32.sub local.set $2 local.get $0 i64.extend_i32_u local.tee $4 - local.get $4 i64.const 32 i64.shl + local.get $4 i64.or local.set $4 loop $while-continue|0 @@ -2383,15 +2388,9 @@ local.get $0 i32.const 16 i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub local.tee $2 local.get $1 i32.store offset=12 @@ -2662,29 +2661,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2706,25 +2703,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2797,25 +2794,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2884,25 +2881,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2942,143 +2939,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3105,63 +3088,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3188,23 +3165,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3513,10 +3488,10 @@ local.get $0 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1344 i32.const 1104 @@ -3525,9 +3500,9 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 i32.load offset=4 - local.get $1 i32.add i32.load8_u ) @@ -3577,10 +3552,10 @@ i32.const 1 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1344 i32.const 1104 @@ -3646,19 +3621,19 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 local.get $0 i32.load offset=8 local.tee $5 local.get $2 i32.shr_u - i32.gt_u + local.get $1 + i32.lt_u if - local.get $1 i32.const 1073741820 local.get $2 i32.shr_u - i32.gt_u + local.get $1 + i32.lt_u if i32.const 1056 i32.const 1104 @@ -3678,88 +3653,90 @@ select local.get $2 i32.shl - local.set $2 + local.set $1 block $__inlined_func$~lib/rt/itcms/__renew (result i32) local.get $3 if local.get $5 i32.const 1 i32.shl - local.tee $1 + local.tee $2 i32.const 1073741820 - local.get $1 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $1 - local.get $2 + local.tee $2 + local.get $1 local.get $1 local.get $2 - i32.gt_u + i32.lt_u select - local.set $2 + local.set $1 end - local.get $2 + local.get $1 + local.set $2 local.get $4 - local.tee $1 + local.tee $3 i32.const 20 i32.sub - local.tee $6 + local.tee $4 i32.load i32.const -4 i32.and i32.const 16 i32.sub - i32.le_u + local.get $1 + i32.ge_u if - local.get $6 + local.get $4 local.get $2 i32.store offset=16 - local.get $1 + local.get $3 br $__inlined_func$~lib/rt/itcms/__renew end local.get $2 - local.get $6 + local.get $4 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 - local.get $1 + local.tee $6 + local.get $3 local.get $2 - local.get $6 + local.get $4 i32.load offset=16 - local.tee $1 - local.get $1 + local.tee $4 local.get $2 - i32.gt_u + local.get $4 + i32.lt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $6 end - local.tee $1 + local.tee $2 local.get $5 i32.add i32.const 0 - local.get $2 + local.get $1 local.get $5 i32.sub call $~lib/memory/memory.fill - local.get $1 - local.get $4 + local.get $2 + local.get $3 i32.ne if local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.const 0 call $~lib/rt/itcms/__link end local.get $0 - local.get $2 + local.get $1 i32.store offset=8 end ) @@ -3790,10 +3767,10 @@ local.get $2 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1344 i32.const 1104 @@ -3856,7 +3833,6 @@ ) (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=12 @@ -3865,6 +3841,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -3925,7 +3902,6 @@ i32.const 2 i32.shl i32.add - local.get $5 local.get $2 i32.const 0 i32.lt_s @@ -3950,6 +3926,7 @@ local.tee $2 i32.const 2 i32.shl + local.get $5 i32.add local.get $3 i32.const 0 @@ -4070,10 +4047,10 @@ ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -4327,10 +4304,10 @@ f32.convert_i32_s ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1344 i32.const 1104 @@ -4458,46 +4435,46 @@ i32.const 1 global.set $~lib/math/random_seeded local.get $0 - local.get $0 i64.const 33 i64.shr_u + local.get $0 i64.xor i64.const -49064778989728563 i64.mul local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor i64.const -4265267296055464877 i64.mul local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor global.set $~lib/math/random_state0_64 global.get $~lib/math/random_state0_64 i64.const -1 i64.xor local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor i64.const -49064778989728563 i64.mul local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor i64.const -4265267296055464877 i64.mul local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor global.set $~lib/math/random_state1_64 local.get $0 @@ -4505,62 +4482,62 @@ i32.const 1831565813 i32.add local.tee $1 + i32.const 1 + i32.or local.get $1 i32.const 15 i32.shr_u - i32.xor local.get $1 - i32.const 1 - i32.or + i32.xor i32.mul local.tee $1 - local.get $1 - local.get $1 i32.const 61 i32.or local.get $1 - local.get $1 i32.const 7 i32.shr_u + local.get $1 i32.xor i32.mul + local.get $1 i32.add + local.get $1 i32.xor local.tee $1 - local.get $1 i32.const 14 i32.shr_u + local.get $1 i32.xor global.set $~lib/math/random_state0_32 global.get $~lib/math/random_state0_32 i32.const 1831565813 i32.add local.tee $1 + i32.const 1 + i32.or local.get $1 i32.const 15 i32.shr_u - i32.xor local.get $1 - i32.const 1 - i32.or + i32.xor i32.mul local.tee $1 - local.get $1 - local.get $1 i32.const 61 i32.or local.get $1 - local.get $1 i32.const 7 i32.shr_u + local.get $1 i32.xor i32.mul + local.get $1 i32.add + local.get $1 i32.xor local.tee $1 - local.get $1 i32.const 14 i32.shr_u + local.get $1 i32.xor global.set $~lib/math/random_state1_32 global.get $~lib/math/random_state1_32 @@ -4594,25 +4571,24 @@ (local $6 f32) (local $7 f32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add local.tee $8 - i32.const 1 - i32.and - local.get $3 - local.get $8 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $8 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $8 loop $for-loop|0 @@ -4626,12 +4602,12 @@ i32.shl i32.add local.tee $3 - f32.load - local.set $5 - local.get $3 f32.load offset=4 local.tee $7 local.set $6 + local.get $3 + f32.load + local.set $5 i32.const 2 global.set $~argumentsLength local.get $5 @@ -4657,10 +4633,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add f32.load local.set $7 @@ -4674,10 +4650,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add local.get $7 f32.store offset=8 @@ -4689,10 +4665,10 @@ end end end - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add local.get $5 f32.store offset=8 @@ -4702,10 +4678,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add f32.load local.set $5 @@ -4719,10 +4695,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add local.get $5 f32.store offset=4 @@ -4734,10 +4710,10 @@ end end end - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add local.get $6 f32.store offset=4 @@ -4761,19 +4737,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add f32.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 2 i32.shl + local.get $0 i32.add f32.load i32.const 2 @@ -4837,14 +4813,14 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $7 f32.load f32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 + local.get $7 local.get $5 f32.store local.get $2 @@ -4934,17 +4910,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $9 local.get $6 i32.sub i32.const 2 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add f32.load offset=4 f32.store @@ -4960,17 +4936,17 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 2 i32.shl + local.get $4 i32.add f32.load local.set $7 - local.get $4 local.get $2 i32.const 2 i32.shl + local.get $4 i32.add f32.load local.set $8 @@ -4984,10 +4960,10 @@ i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add local.get $7 f32.store @@ -4996,10 +4972,10 @@ i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add local.get $8 f32.store @@ -5026,11 +5002,10 @@ (local $9 i64) (local $10 i32) (local $11 i32) - (local $12 f32) + (local $12 i32) (local $13 i32) (local $14 f32) - (local $15 i32) - (local $16 f32) + (local $15 f32) local.get $1 i32.const 48 i32.le_s @@ -5044,10 +5019,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -5055,7 +5031,7 @@ end local.get $0 f32.load - local.set $16 + local.set $15 local.get $0 f32.load offset=4 local.set $14 @@ -5063,8 +5039,8 @@ global.set $~argumentsLength local.get $0 local.get $14 - local.get $16 - local.get $16 + local.get $15 + local.get $15 local.get $14 local.get $2 i32.load @@ -5074,39 +5050,39 @@ local.tee $1 select f32.store + local.get $15 + local.get $14 + local.get $1 + select + local.set $15 local.get $0 f32.load offset=8 - local.set $12 + local.set $14 i32.const 2 global.set $~argumentsLength - local.get $16 + local.get $0 + local.get $14 + local.get $15 + local.get $15 local.get $14 - local.get $1 - select - local.tee $16 - local.get $12 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.gt_s - local.set $1 - local.get $0 - local.get $12 - local.get $16 - local.get $1 + local.tee $1 select f32.store offset=4 local.get $0 - local.get $16 - local.get $12 + local.get $15 + local.get $14 local.get $1 select f32.store offset=8 end local.get $0 f32.load - local.set $16 + local.set $15 local.get $0 f32.load offset=4 local.set $14 @@ -5114,8 +5090,8 @@ global.set $~argumentsLength local.get $0 local.get $14 - local.get $16 - local.get $16 + local.get $15 + local.get $15 local.get $14 local.get $2 i32.load @@ -5126,7 +5102,7 @@ select f32.store local.get $0 - local.get $16 + local.get $15 local.get $14 local.get $1 select @@ -5135,7 +5111,7 @@ end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -5147,38 +5123,28 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $13 + call $~lib/rt/tlsf/__alloc + local.tee $12 local.get $7 i32.add local.set $11 i32.const 0 local.set $7 loop $for-loop|1 - local.get $5 + local.get $6 local.get $7 i32.gt_u if - local.get $13 local.get $7 i32.const 2 i32.shl + local.get $12 i32.add i32.const -1 i32.store @@ -5192,97 +5158,87 @@ local.get $1 i32.const 2 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.set $10 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $15 + local.tee $13 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $5 i32.const 1 i32.add - local.tee $7 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $15 + local.get $13 i32.const 31 - local.get $15 + local.get $13 i32.const 31 i32.lt_s select - local.tee $1 - local.get $7 + local.tee $5 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $15 + local.get $5 + local.get $13 i32.lt_s if local.get $0 - local.get $1 + local.get $5 i32.const 1 i32.add - local.tee $5 - local.get $15 + local.tee $6 + local.get $13 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 - local.get $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $15 - local.get $5 + local.get $6 + local.get $13 + local.get $6 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $15 + local.tee $1 + local.get $1 + local.get $13 i32.gt_s select local.tee $7 - local.get $4 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $15 + local.get $13 i32.const 1 i32.add i64.extend_i32_u local.tee $9 i64.div_u - local.get $5 + local.get $6 local.get $7 i32.add i32.const 1 @@ -5295,26 +5251,28 @@ i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $6 + local.get $1 + local.get $8 i32.lt_u if - local.get $13 - local.get $6 + local.get $8 i32.const 2 i32.shl + local.get $12 i32.add i32.load - local.tee $8 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $8 + local.get $4 local.get $11 - local.get $6 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -5322,54 +5280,54 @@ i32.load i32.const 1 i32.add - local.get $1 + local.get $5 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $12 i32.add i32.const -1 i32.store - local.get $8 + local.get $4 local.set $3 end - local.get $6 + local.get $8 i32.const 1 i32.sub - local.set $6 + local.set $8 br $for-loop|3 end end - local.get $13 - local.get $4 + local.get $12 + local.get $1 i32.const 2 i32.shl - local.tee $6 + local.tee $4 i32.add local.get $3 i32.store - local.get $6 + local.get $4 local.get $11 i32.add - local.get $1 - i32.store local.get $5 + i32.store + local.get $6 local.set $3 local.get $7 - local.set $1 - local.get $4 - local.set $6 + local.set $5 + local.get $1 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $4 if - local.get $13 - local.get $6 + local.get $4 i32.const 2 i32.shl + local.get $12 i32.add i32.load local.tee $1 @@ -5378,29 +5336,29 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $15 + local.get $13 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end local.get $10 call $~lib/rt/tlsf/__free - local.get $13 + local.get $12 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) @@ -5409,21 +5367,21 @@ local.get $0 i32.reinterpret_f32 local.tee $2 - local.get $2 i32.const 31 i32.shr_s i32.const 1 i32.shr_u + local.get $2 i32.xor local.tee $2 local.get $1 i32.reinterpret_f32 local.tee $3 - local.get $3 i32.const 31 i32.shr_s i32.const 1 i32.shr_u + local.get $3 i32.xor local.tee $3 i32.gt_s @@ -5502,25 +5460,24 @@ (local $6 f64) (local $7 f64) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add local.tee $8 - i32.const 1 - i32.and - local.get $3 - local.get $8 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $8 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $8 loop $for-loop|0 @@ -5534,12 +5491,12 @@ i32.shl i32.add local.tee $3 - f64.load - local.set $5 - local.get $3 f64.load offset=8 local.tee $7 local.set $6 + local.get $3 + f64.load + local.set $5 i32.const 2 global.set $~argumentsLength local.get $5 @@ -5565,10 +5522,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add f64.load local.set $7 @@ -5582,10 +5539,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $7 f64.store offset=16 @@ -5597,10 +5554,10 @@ end end end - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $5 f64.store offset=16 @@ -5610,10 +5567,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add f64.load local.set $5 @@ -5627,10 +5584,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $5 f64.store offset=8 @@ -5642,10 +5599,10 @@ end end end - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $6 f64.store offset=8 @@ -5669,19 +5626,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add f64.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 3 i32.shl + local.get $0 i32.add f64.load i32.const 2 @@ -5745,14 +5702,14 @@ i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $7 f64.load f64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 + local.get $7 local.get $5 f64.store local.get $2 @@ -5842,17 +5799,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $9 local.get $6 i32.sub i32.const 3 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 3 i32.shl + local.get $0 i32.add f64.load offset=8 f64.store @@ -5868,17 +5825,17 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 3 i32.shl + local.get $4 i32.add f64.load local.set $7 - local.get $4 local.get $2 i32.const 3 i32.shl + local.get $4 i32.add f64.load local.set $8 @@ -5892,10 +5849,10 @@ i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add local.get $7 f64.store @@ -5904,10 +5861,10 @@ i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add local.get $8 f64.store @@ -5934,11 +5891,10 @@ (local $9 i64) (local $10 i32) (local $11 i32) - (local $12 f64) + (local $12 i32) (local $13 i32) (local $14 f64) - (local $15 i32) - (local $16 f64) + (local $15 f64) local.get $1 i32.const 48 i32.le_s @@ -5952,10 +5908,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -5963,7 +5920,7 @@ end local.get $0 f64.load - local.set $16 + local.set $15 local.get $0 f64.load offset=8 local.set $14 @@ -5971,8 +5928,8 @@ global.set $~argumentsLength local.get $0 local.get $14 - local.get $16 - local.get $16 + local.get $15 + local.get $15 local.get $14 local.get $2 i32.load @@ -5982,39 +5939,39 @@ local.tee $1 select f64.store + local.get $15 + local.get $14 + local.get $1 + select + local.set $15 local.get $0 f64.load offset=16 - local.set $12 + local.set $14 i32.const 2 global.set $~argumentsLength - local.get $16 + local.get $0 + local.get $14 + local.get $15 + local.get $15 local.get $14 - local.get $1 - select - local.tee $16 - local.get $12 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s - local.set $1 - local.get $0 - local.get $12 - local.get $16 - local.get $1 + local.tee $1 select f64.store offset=8 local.get $0 - local.get $16 - local.get $12 + local.get $15 + local.get $14 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $16 + local.set $15 local.get $0 f64.load offset=8 local.set $14 @@ -6022,8 +5979,8 @@ global.set $~argumentsLength local.get $0 local.get $14 - local.get $16 - local.get $16 + local.get $15 + local.get $15 local.get $14 local.get $2 i32.load @@ -6034,7 +5991,7 @@ select f64.store local.get $0 - local.get $16 + local.get $15 local.get $14 local.get $1 select @@ -6043,7 +6000,7 @@ end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -6055,38 +6012,28 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $13 + call $~lib/rt/tlsf/__alloc + local.tee $12 local.get $7 i32.add local.set $11 i32.const 0 local.set $7 loop $for-loop|1 - local.get $5 + local.get $6 local.get $7 i32.gt_u if - local.get $13 local.get $7 i32.const 2 i32.shl + local.get $12 i32.add i32.const -1 i32.store @@ -6100,97 +6047,87 @@ local.get $1 i32.const 3 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.set $10 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $15 + local.tee $13 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $5 i32.const 1 i32.add - local.tee $7 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $15 + local.get $13 i32.const 31 - local.get $15 + local.get $13 i32.const 31 i32.lt_s select - local.tee $1 - local.get $7 + local.tee $5 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $15 + local.get $5 + local.get $13 i32.lt_s if local.get $0 - local.get $1 + local.get $5 i32.const 1 i32.add - local.tee $5 - local.get $15 + local.tee $6 + local.get $13 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 - local.get $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $15 - local.get $5 + local.get $6 + local.get $13 + local.get $6 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $15 + local.tee $1 + local.get $1 + local.get $13 i32.gt_s select local.tee $7 - local.get $4 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $15 + local.get $13 i32.const 1 i32.add i64.extend_i32_u local.tee $9 i64.div_u - local.get $5 + local.get $6 local.get $7 i32.add i32.const 1 @@ -6203,26 +6140,28 @@ i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $6 + local.get $1 + local.get $8 i32.lt_u if - local.get $13 - local.get $6 + local.get $8 i32.const 2 i32.shl + local.get $12 i32.add i32.load - local.tee $8 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $8 + local.get $4 local.get $11 - local.get $6 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -6230,54 +6169,54 @@ i32.load i32.const 1 i32.add - local.get $1 + local.get $5 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $12 i32.add i32.const -1 i32.store - local.get $8 + local.get $4 local.set $3 end - local.get $6 + local.get $8 i32.const 1 i32.sub - local.set $6 + local.set $8 br $for-loop|3 end end - local.get $13 - local.get $4 + local.get $12 + local.get $1 i32.const 2 i32.shl - local.tee $6 + local.tee $4 i32.add local.get $3 i32.store - local.get $6 + local.get $4 local.get $11 i32.add - local.get $1 - i32.store local.get $5 + i32.store + local.get $6 local.set $3 local.get $7 - local.set $1 - local.get $4 - local.set $6 + local.set $5 + local.get $1 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $4 if - local.get $13 - local.get $6 + local.get $4 i32.const 2 i32.shl + local.get $12 i32.add i32.load local.tee $1 @@ -6286,29 +6225,29 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $15 + local.get $13 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end local.get $10 call $~lib/rt/tlsf/__free - local.get $13 + local.get $12 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) @@ -6317,21 +6256,21 @@ local.get $0 i64.reinterpret_f64 local.tee $2 - local.get $2 i64.const 63 i64.shr_s i64.const 1 i64.shr_u + local.get $2 i64.xor local.tee $2 local.get $1 i64.reinterpret_f64 local.tee $3 - local.get $3 i64.const 63 i64.shr_s i64.const 1 i64.shr_u + local.get $3 i64.xor local.tee $3 i64.gt_s @@ -6341,10 +6280,10 @@ i32.sub ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1344 i32.const 1104 @@ -6366,25 +6305,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.tee $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $7 loop $for-loop|0 @@ -6397,13 +6335,13 @@ i32.const 2 i32.shl i32.add - local.tee $5 - i32.load - local.set $3 - local.get $5 + local.tee $3 i32.load offset=4 local.tee $6 local.set $5 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength local.get $3 @@ -6429,10 +6367,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load local.set $8 @@ -6446,10 +6384,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $8 i32.store offset=8 @@ -6461,10 +6399,10 @@ end end end - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $3 i32.store offset=8 @@ -6474,10 +6412,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load local.set $3 @@ -6491,10 +6429,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $3 i32.store offset=4 @@ -6506,10 +6444,10 @@ end end end - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $5 i32.store offset=4 @@ -6532,19 +6470,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 2 i32.shl + local.get $0 i32.add i32.load i32.const 2 @@ -6601,22 +6539,22 @@ i32.add local.tee $3 i32.load - local.set $5 + local.set $6 local.get $3 local.get $0 local.get $2 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 local.get $5 + local.get $6 i32.store local.get $2 i32.const 1 @@ -6703,17 +6641,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $7 local.get $6 i32.sub i32.const 2 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.store @@ -6729,48 +6667,48 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $7 - local.get $4 + local.set $8 local.get $2 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $8 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $6 i32.const 1 i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $2 i32.const 1 @@ -6795,8 +6733,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -6810,10 +6748,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -6821,7 +6760,7 @@ end local.get $0 i32.load - local.set $1 + local.set $3 local.get $0 i32.load offset=4 local.set $4 @@ -6829,50 +6768,50 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $5 + local.tee $1 select i32.store + local.get $3 + local.get $4 + local.get $1 + select + local.set $3 local.get $0 i32.load offset=8 - local.set $3 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 - local.get $5 - select - local.tee $1 local.get $3 + local.get $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 + local.tee $1 select i32.store offset=4 local.get $0 - local.get $1 local.get $3 local.get $4 + local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $1 + local.set $3 local.get $0 i32.load offset=4 local.set $4 @@ -6880,28 +6819,28 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $3 local.get $4 - local.get $2 + local.get $1 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -6919,21 +6858,11 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 + call $~lib/rt/tlsf/__alloc + local.tee $10 local.get $5 i32.add - local.set $10 + local.set $11 i32.const 0 local.set $5 loop $for-loop|1 @@ -6941,10 +6870,10 @@ local.get $6 i32.lt_u if - local.get $9 local.get $5 i32.const 2 i32.shl + local.get $10 i32.add i32.const -1 i32.store @@ -6958,57 +6887,47 @@ local.get $1 i32.const 2 i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 + call $~lib/rt/tlsf/__alloc + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -7016,23 +6935,23 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $8 + local.get $9 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select local.tee $5 - local.get $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -7042,11 +6961,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -7056,31 +6975,33 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $9 - local.get $4 + local.get $8 i32.const 2 i32.shl + local.get $10 i32.add i32.load - local.tee $13 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 local.get $4 + local.get $11 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -7088,27 +7009,27 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $4 local.set $3 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -7116,15 +7037,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store local.get $6 local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -7132,10 +7053,10 @@ loop $for-loop|4 local.get $4 if - local.get $9 local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load local.tee $1 @@ -7144,16 +7065,16 @@ if local.get $0 local.get $1 - local.get $10 local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -7164,9 +7085,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -7179,25 +7100,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.tee $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $7 loop $for-loop|0 @@ -7210,13 +7130,13 @@ i32.const 2 i32.shl i32.add - local.tee $5 - i32.load - local.set $3 - local.get $5 + local.tee $3 i32.load offset=4 local.tee $6 local.set $5 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength local.get $3 @@ -7242,10 +7162,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load local.set $8 @@ -7259,10 +7179,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $8 i32.store offset=8 @@ -7274,10 +7194,10 @@ end end end - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $3 i32.store offset=8 @@ -7287,10 +7207,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load local.set $3 @@ -7304,10 +7224,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $3 i32.store offset=4 @@ -7319,10 +7239,10 @@ end end end - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $5 i32.store offset=4 @@ -7345,19 +7265,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 2 i32.shl + local.get $0 i32.add i32.load i32.const 2 @@ -7414,22 +7334,22 @@ i32.add local.tee $3 i32.load - local.set $5 + local.set $6 local.get $3 local.get $0 local.get $2 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 local.get $5 + local.get $6 i32.store local.get $2 i32.const 1 @@ -7516,17 +7436,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $7 local.get $6 i32.sub i32.const 2 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.store @@ -7542,48 +7462,48 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $7 - local.get $4 + local.set $8 local.get $2 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $8 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $6 i32.const 1 i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $2 i32.const 1 @@ -7608,8 +7528,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -7623,10 +7543,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -7634,7 +7555,7 @@ end local.get $0 i32.load - local.set $1 + local.set $3 local.get $0 i32.load offset=4 local.set $4 @@ -7642,50 +7563,50 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $5 + local.tee $1 select i32.store + local.get $3 + local.get $4 + local.get $1 + select + local.set $3 local.get $0 i32.load offset=8 - local.set $3 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 - local.get $5 - select - local.tee $1 local.get $3 + local.get $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 + local.tee $1 select i32.store offset=4 local.get $0 - local.get $1 local.get $3 local.get $4 + local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $1 + local.set $3 local.get $0 i32.load offset=4 local.set $4 @@ -7693,28 +7614,28 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $3 local.get $4 - local.get $2 + local.get $1 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -7732,21 +7653,11 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 + call $~lib/rt/tlsf/__alloc + local.tee $10 local.get $5 i32.add - local.set $10 + local.set $11 i32.const 0 local.set $5 loop $for-loop|1 @@ -7754,10 +7665,10 @@ local.get $6 i32.lt_u if - local.get $9 local.get $5 i32.const 2 i32.shl + local.get $10 i32.add i32.const -1 i32.store @@ -7771,57 +7682,47 @@ local.get $1 i32.const 2 i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 + call $~lib/rt/tlsf/__alloc + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -7829,23 +7730,23 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $8 + local.get $9 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select local.tee $5 - local.get $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -7855,11 +7756,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -7869,31 +7770,33 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $9 - local.get $4 + local.get $8 i32.const 2 i32.shl + local.get $10 i32.add i32.load - local.tee $13 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 local.get $4 + local.get $11 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -7901,27 +7804,27 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $4 local.set $3 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -7929,15 +7832,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store local.get $6 local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -7945,10 +7848,10 @@ loop $for-loop|4 local.get $4 if - local.get $9 local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load local.tee $1 @@ -7957,16 +7860,16 @@ if local.get $0 local.get $1 - local.get $10 local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -7977,9 +7880,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -8008,14 +7911,14 @@ global.set $~lib/math/random_state0_64 local.get $1 local.get $0 - local.get $0 i64.const 23 i64.shl + local.get $0 i64.xor local.tee $0 - local.get $0 i64.const 17 i64.shr_u + local.get $0 i64.xor i64.xor local.get $1 @@ -8063,23 +7966,22 @@ i64.const 0 i64.store local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add local.tee $6 - i32.const 1 - i32.and - local.get $3 - local.get $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select i32.add local.set $8 @@ -8552,17 +8454,7 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.tee $9 local.get $5 i32.add @@ -8591,17 +8483,7 @@ local.get $1 i32.const 2 i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.set $11 local.get $0 i32.const 0 @@ -8819,10 +8701,10 @@ ) (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -9207,13 +9089,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -9242,13 +9124,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -9268,12 +9150,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -9283,12 +9165,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -9770,87 +9652,89 @@ end local.get $0 ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) (local $7 i64) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) (local $12 i64) - local.get $3 + (local $13 i64) + local.get $2 local.get $1 i64.sub - local.set $9 - local.get $3 + local.set $10 + local.get $2 i64.const 1 i32.const 0 - local.get $4 + local.get $3 i32.sub - local.tee $10 + local.tee $11 i64.extend_i32_s local.tee $1 i64.shl - local.tee $11 + local.tee $12 i64.const 1 i64.sub - local.tee $12 + local.tee $13 i64.and local.set $7 - local.get $3 + local.get $2 local.get $1 i64.shr_u i32.wrap_i64 - local.tee $2 - local.set $4 - local.get $2 + local.tee $6 + local.set $3 + local.get $6 i32.const 100000 i32.lt_u if (result i32) - local.get $4 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $4 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $4 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $4 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $4 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $4 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $4 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.set $8 + local.set $9 loop $while-continue|0 - local.get $8 + local.get $9 i32.const 0 i32.gt_s if @@ -9866,243 +9750,249 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + local.get $9 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $2 + local.get $6 i32.const 1000000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 100000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 100000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 10000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 10000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 1000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 1000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 100000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 100000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 10000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 10000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 1000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 1000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 100 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 100 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 10 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 10 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 - local.set $4 + local.get $6 + local.set $3 i32.const 0 - local.set $2 + local.set $6 br $break|1 end i32.const 0 - local.set $4 + local.set $3 end - local.get $4 - local.get $6 + local.get $3 + local.get $5 i32.or if + local.get $5 + local.tee $8 + i32.const 1 + i32.add + local.set $5 local.get $0 - local.get $6 + local.get $8 i32.const 1 i32.shl i32.add - local.get $4 + local.get $3 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 end - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 + local.set $9 local.get $7 - local.get $2 + local.get $6 i64.extend_i32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl i64.add local.tee $1 - local.get $5 + local.get $4 i64.le_u if - local.get $8 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $9 i32.const 2 i32.shl i32.const 12624 i32.add i64.load32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl - local.set $3 + local.set $2 local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $6 i32.load16_u - local.set $4 + local.set $3 loop $while-continue|3 - local.get $3 - local.get $5 + local.get $2 + local.get $4 local.get $1 i64.sub i64.le_u i32.const 0 local.get $1 - local.get $9 + local.get $10 i64.lt_u select if (result i32) i32.const 1 - local.get $9 + local.get $10 local.get $1 i64.sub local.get $1 - local.get $3 + local.get $2 i64.add local.tee $7 - local.get $9 + local.get $10 i64.sub i64.gt_u local.get $7 - local.get $9 + local.get $10 i64.lt_u select else i32.const 0 end if - local.get $4 + local.get $3 i32.const 1 i32.sub - local.set $4 + local.set $3 local.get $1 - local.get $3 + local.get $2 i64.add local.set $1 br $while-continue|3 end end - local.get $2 - local.get $4 - i32.store16 local.get $6 + local.get $3 + i32.store16 + local.get $5 return end br $while-continue|0 end end - local.get $10 + local.get $11 i64.extend_i32_s local.set $1 loop $while-continue|4 - local.get $5 + local.get $4 i64.const 10 i64.mul - local.set $5 + local.set $4 local.get $7 i64.const 10 i64.mul - local.tee $3 + local.tee $2 local.get $1 i64.shr_u local.tee $7 - local.get $6 + local.get $5 i64.extend_i32_s i64.or i64.const 0 i64.ne if + local.get $5 + local.tee $3 + i32.const 1 + i32.add + local.set $5 local.get $0 - local.get $6 + local.get $3 i32.const 1 i32.shl i32.add @@ -10113,32 +10003,28 @@ i32.const 48 i32.add i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 end - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 - local.get $5 - local.get $3 - local.get $12 + local.set $9 + local.get $4 + local.get $2 + local.get $13 i64.and local.tee $7 i64.le_u br_if $while-continue|4 end - local.get $8 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $7 local.set $1 - local.get $9 + local.get $10 i32.const 0 - local.get $8 + local.get $9 i32.sub i32.const 2 i32.shl @@ -10146,41 +10032,41 @@ i32.add i64.load32_u i64.mul - local.set $3 + local.set $2 local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $6 i32.load16_u - local.set $4 + local.set $3 loop $while-continue|6 - local.get $11 - local.get $5 + local.get $12 + local.get $4 local.get $1 i64.sub i64.le_u i32.const 0 local.get $1 - local.get $3 + local.get $2 i64.lt_u select if (result i32) i32.const 1 - local.get $3 + local.get $2 local.get $1 i64.sub local.get $1 - local.get $11 + local.get $12 i64.add local.tee $7 - local.get $3 + local.get $2 i64.sub i64.gt_u - local.get $3 + local.get $2 local.get $7 i64.gt_u select @@ -10188,21 +10074,21 @@ i32.const 0 end if - local.get $4 + local.get $3 i32.const 1 i32.sub - local.set $4 + local.set $3 local.get $1 - local.get $11 + local.get $12 i64.add local.set $1 br $while-continue|6 end end - local.get $2 - local.get $4 - i32.store16 local.get $6 + local.get $3 + i32.store16 + local.get $5 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -10547,18 +10433,20 @@ (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) - (local $4 i64) + (local $4 i32) (local $5 i32) (local $6 i64) (local $7 i64) - (local $8 i32) + (local $8 i64) (local $9 i32) (local $10 i32) - (local $11 i32) + (local $11 i64) + (local $12 i64) + (local $13 i64) local.get $1 f64.const 0 f64.lt - local.tee $10 + local.tee $9 if (result f64) local.get $0 i32.const 45 @@ -10575,66 +10463,68 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $9 + local.set $5 + local.get $2 + i64.const 4503599627370495 + i64.and + local.get $5 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and i64.add - local.tee $3 + local.set $2 + local.get $5 + i32.const 1 + local.get $5 + select + i32.const 1075 + i32.sub + local.tee $5 + i32.const 1 + i32.sub + local.get $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $2 - local.get $2 + local.tee $3 i64.clz i32.wrap_i64 - local.tee $8 + local.tee $4 + i32.sub + local.set $10 + local.get $3 + local.get $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $9 - i32.const 1 - local.get $9 - select - i32.const 1075 - i32.sub - local.tee $9 - i32.const 1 - i32.sub - local.get $8 - i32.sub - local.set $8 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $5 + local.tee $4 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 local.get $5 + local.get $4 i32.sub - local.get $8 + local.get $10 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $8 + local.get $10 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $8 + local.tee $5 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -10643,9 +10533,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $5 + local.tee $4 local.get $1 - local.get $5 + local.get $4 f64.convert_i32_s f64.ne i32.add @@ -10653,59 +10543,84 @@ i32.shr_s i32.const 1 i32.add - local.tee $5 + local.tee $4 i32.const 3 i32.shl - local.tee $11 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $11 + local.get $10 i32.const 11752 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $5 + local.get $4 i32.const 1 i32.shl i32.const 12448 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow + local.get $2 + local.get $2 + i64.clz + i64.shl + local.tee $3 + i64.const 4294967295 + i64.and + local.set $12 global.get $~lib/util/number/_frc_pow - local.tee $6 + local.tee $11 i64.const 4294967295 i64.and local.set $2 - local.get $6 + local.get $3 i64.const 32 i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $4 + local.set $13 + local.get $11 i64.const 32 i64.shr_u - local.tee $7 - i64.mul + local.set $3 local.get $2 - local.get $7 + local.get $13 i64.mul local.get $2 - local.get $4 - i64.const 4294967295 - i64.and - local.tee $4 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.set $11 + global.get $~lib/util/number/_frc_plus + local.tee $6 + i64.const 4294967295 + i64.and + local.set $7 + local.get $2 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + i64.mul + local.get $2 + local.get $7 + i64.mul i64.const 32 i64.shr_u i64.add - local.get $4 + local.set $8 + local.get $3 local.get $6 i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $3 local.get $7 + i64.mul + local.get $8 i64.const 4294967295 i64.and i64.add @@ -10716,46 +10631,42 @@ i64.add i64.const 1 i64.sub - local.set $4 - local.get $0 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u + local.set $6 + global.get $~lib/util/number/_frc_minus local.tee $7 - i64.mul + i64.const 4294967295 + i64.and + local.set $8 local.get $2 local.get $7 + i64.const 32 + i64.shr_u + local.tee $7 i64.mul local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 + local.get $8 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.set $2 + local.get $9 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 + local.get $3 + local.get $13 + i64.mul + local.get $11 i64.const 32 i64.shr_u i64.add local.get $3 - local.get $6 + local.get $12 i64.mul - local.get $7 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -10764,48 +10675,24 @@ i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $5 - local.get $9 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $4 + local.get $6 local.get $5 - local.get $8 + global.get $~lib/util/number/_exp_pow i32.add i32.const -64 i32.sub - local.get $4 local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $4 - i64.mul - local.get $2 - local.get $4 - i64.mul - local.get $2 local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 + local.get $7 i64.mul + local.get $2 i64.const 32 i64.shr_u i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul local.get $3 + local.get $8 + i64.mul + local.get $2 i64.const 4294967295 i64.and i64.add @@ -10817,13 +10704,13 @@ i64.const 1 i64.add i64.sub - local.get $10 + local.get $9 call $~lib/util/number/genDigits - local.get $10 + local.get $9 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $10 + local.get $9 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -11448,14 +11335,6 @@ i64.const 100000000 i64.ge_u if - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add local.get $1 local.get $1 i64.const 100000000 @@ -11467,8 +11346,20 @@ i32.wrap_i64 local.tee $3 i32.const 10000 + i32.div_u + local.set $4 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 10000 i32.rem_u - local.tee $4 + local.tee $3 i32.const 100 i32.div_u i32.const 2 @@ -11476,7 +11367,7 @@ i32.const 9628 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -11488,18 +11379,15 @@ i64.shl i64.or i64.store - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add - local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 + local.get $4 i32.const 100 i32.div_u i32.const 2 @@ -11507,7 +11395,7 @@ i32.const 9628 i32.add i64.load32_u - local.get $3 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -12060,9 +11948,9 @@ i32.const 0 i32.const 1 call $~lib/array/ensureCapacity + local.get $3 local.get $0 i32.load offset=4 - local.get $3 i32.add local.get $1 i32.store8 @@ -12076,25 +11964,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.tee $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $7 loop $for-loop|0 @@ -12105,13 +11992,13 @@ local.get $0 local.get $7 i32.add - local.tee $5 - i32.load8_u - local.set $3 - local.get $5 + local.tee $3 i32.load8_u offset=1 local.tee $6 local.set $5 + local.get $3 + i32.load8_u + local.set $3 i32.const 2 global.set $~argumentsLength local.get $3 @@ -12289,20 +12176,20 @@ i32.add local.tee $3 i32.load8_u - local.set $5 + local.set $6 local.get $3 local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $5 i32.load8_u i32.store8 local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 local.get $5 + local.get $6 i32.store8 local.get $2 i32.const 1 @@ -12370,10 +12257,9 @@ i32.const 1 i32.sub local.tee $2 - local.tee $8 i32.add local.get $0 - local.get $8 + local.get $2 i32.add i32.load8_u i32.store8 @@ -12385,10 +12271,10 @@ local.get $6 i32.gt_s if - local.get $4 local.get $7 local.get $6 i32.sub + local.get $4 i32.add local.get $0 local.get $6 @@ -12411,16 +12297,16 @@ local.get $6 i32.add i32.load8_u - local.set $7 + local.set $8 local.get $2 local.get $4 i32.add i32.load8_u - local.set $8 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -12430,7 +12316,7 @@ local.get $0 local.get $1 i32.add - local.get $7 + local.get $8 i32.store8 local.get $6 i32.const 1 @@ -12440,7 +12326,7 @@ local.get $0 local.get $1 i32.add - local.get $8 + local.get $7 i32.store8 local.get $2 i32.const 1 @@ -12465,8 +12351,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -12480,10 +12366,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -12491,7 +12378,7 @@ end local.get $0 i32.load8_u - local.set $1 + local.set $3 local.get $0 i32.load8_u offset=1 local.set $4 @@ -12499,50 +12386,50 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $5 + local.tee $1 select i32.store8 + local.get $3 + local.get $4 + local.get $1 + select + local.set $3 local.get $0 i32.load8_u offset=2 - local.set $3 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 - local.get $5 - select - local.tee $1 local.get $3 + local.get $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 + local.tee $1 select i32.store8 offset=1 local.get $0 - local.get $1 local.get $3 local.get $4 + local.get $1 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $1 + local.set $3 local.get $0 i32.load8_u offset=1 local.set $4 @@ -12550,28 +12437,28 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store8 local.get $0 - local.get $1 + local.get $3 local.get $4 - local.get $2 + local.get $1 select i32.store8 offset=1 return end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -12589,21 +12476,11 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 + call $~lib/rt/tlsf/__alloc + local.tee $10 local.get $5 i32.add - local.set $10 + local.set $11 i32.const 0 local.set $5 loop $for-loop|1 @@ -12611,10 +12488,10 @@ local.get $6 i32.lt_u if - local.get $9 local.get $5 i32.const 2 i32.shl + local.get $10 i32.add i32.const -1 i32.store @@ -12625,56 +12502,48 @@ br $for-loop|1 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 + call $~lib/rt/tlsf/__alloc + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -12682,23 +12551,23 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $8 + local.get $9 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select local.tee $5 - local.get $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -12708,11 +12577,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -12722,31 +12591,33 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $9 - local.get $4 + local.get $8 i32.const 2 i32.shl + local.get $10 i32.add i32.load - local.tee $13 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 local.get $4 + local.get $11 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -12754,27 +12625,27 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $4 local.set $3 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -12782,15 +12653,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store local.get $6 local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -12798,10 +12669,10 @@ loop $for-loop|4 local.get $4 if - local.get $9 local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load local.tee $1 @@ -12810,16 +12681,16 @@ if local.get $0 local.get $1 - local.get $10 local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -12830,9 +12701,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) @@ -12921,21 +12792,18 @@ block $folding-inner3 block $folding-inner2 block $folding-inner1 - block $folding-inner0 - block $invalid - block $std/array/ArrayStr - block $std/array/Proxy - block $std/array/Dim - block $std/array/Ref - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner4 $folding-inner0 $std/array/Ref $folding-inner4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner3 $folding-inner3 $std/array/ArrayStr $folding-inner2 $invalid - end - return + block $invalid + block $std/array/ArrayStr + block $std/array/Proxy + block $std/array/Dim + block $std/array/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner3 $folding-inner4 $std/array/Ref $folding-inner3 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner4 $folding-inner4 $std/array/ArrayStr $folding-inner2 $invalid end return end @@ -12945,16 +12813,13 @@ end return end - local.get $0 - call $~lib/array/Array~visit return end - unreachable + local.get $0 + call $~lib/array/Array~visit + return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + unreachable end local.get $0 call $~lib/array/Array~visit @@ -12967,16 +12832,16 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end return end local.get $0 i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end + call $~lib/rt/itcms/__visit ) (func $~setArgumentsLength (param $0 i32) local.get $0 @@ -13747,83 +13612,83 @@ (local $7 i32) (local $8 i32) (local $9 i64) - (local $10 i32) - (local $11 f64) + (local $10 f64) + (local $11 i32) (local $12 f32) global.get $~lib/memory/__stack_pointer i32.const 172 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i64.const 0 i64.store offset=8 - local.get $1 + local.get $3 i64.const 0 i64.store offset=16 - local.get $1 + local.get $3 i64.const 0 i64.store offset=24 - local.get $1 + local.get $3 i64.const 0 i64.store offset=32 - local.get $1 + local.get $3 i64.const 0 i64.store offset=40 - local.get $1 + local.get $3 i64.const 0 i64.store offset=48 - local.get $1 + local.get $3 i64.const 0 i64.store offset=56 - local.get $1 + local.get $3 i64.const 0 i64.store offset=64 - local.get $1 + local.get $3 i64.const 0 i64.store offset=72 - local.get $1 + local.get $3 i64.const 0 i64.store offset=80 - local.get $1 + local.get $3 i64.const 0 i64.store offset=88 - local.get $1 + local.get $3 i64.const 0 i64.store offset=96 - local.get $1 + local.get $3 i64.const 0 i64.store offset=104 - local.get $1 + local.get $3 i64.const 0 i64.store offset=112 - local.get $1 + local.get $3 i64.const 0 i64.store offset=120 - local.get $1 + local.get $3 i64.const 0 i64.store offset=128 - local.get $1 + local.get $3 i64.const 0 i64.store offset=136 - local.get $1 + local.get $3 i64.const 0 i64.store offset=144 - local.get $1 + local.get $3 i64.const 0 i64.store offset=152 - local.get $1 + local.get $3 i64.const 0 i64.store offset=160 - local.get $1 + local.get $3 i32.const 0 i32.store offset=168 memory.size @@ -13865,108 +13730,108 @@ call $std/array/Ref#constructor local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $1 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 2 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store end - local.get $1 + local.get $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $0 i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.const 1 call $~lib/memory/memory.fill + local.get $0 local.get $1 - local.get $3 i32.store + local.get $0 local.get $1 - local.get $3 i32.const 0 call $~lib/rt/itcms/__link + local.get $0 local.get $1 - local.get $3 i32.store offset=4 - local.get $1 + local.get $0 i32.const 1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 local.get $0 - local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $3 local.get $0 + i32.store + local.get $3 i32.const 1664 i32.store - local.get $0 + local.get $3 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -13995,12 +13860,12 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14022,12 +13887,12 @@ i32.const 6 i32.const 1760 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14049,12 +13914,12 @@ i32.const 6 i32.const 1792 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14076,12 +13941,12 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14103,12 +13968,12 @@ i32.const 6 i32.const 1856 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14125,13 +13990,13 @@ i32.const 7 i32.const 1888 call $~lib/rt/__newArray - local.tee $1 + local.tee $5 i32.store offset=12 - local.get $1 + local.get $5 i32.load offset=4 - local.set $4 + local.set $1 i32.const 1 - local.get $1 + local.get $5 i32.load offset=12 local.tee $3 local.get $3 @@ -14151,7 +14016,7 @@ local.get $3 i32.lt_s if - local.get $4 + local.get $1 local.get $0 i32.const 2 i32.shl @@ -14170,12 +14035,12 @@ i32.const 7 i32.const 1936 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 + local.get $5 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14186,21 +14051,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 i32.load offset=4 local.set $3 i32.const 0 - local.get $1 + local.get $5 i32.load offset=12 - local.tee $4 - local.get $4 + local.tee $1 + local.get $1 i32.const 0 i32.gt_s select local.set $0 - loop $for-loop|02 + loop $for-loop|03 local.get $0 - local.get $4 + local.get $1 i32.lt_s if local.get $3 @@ -14214,7 +14079,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|02 + br $for-loop|03 end end i32.const 5 @@ -14222,12 +14087,12 @@ i32.const 7 i32.const 1984 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 + local.get $5 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14238,11 +14103,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 i32.load offset=4 - local.set $4 + local.set $1 i32.const 0 - local.get $1 + local.get $5 i32.load offset=12 local.tee $3 local.get $3 @@ -14260,12 +14125,12 @@ i32.gt_s select local.set $3 - loop $for-loop|04 + loop $for-loop|05 local.get $0 local.get $3 i32.lt_s if - local.get $4 + local.get $1 local.get $0 i32.const 2 i32.shl @@ -14276,7 +14141,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|04 + br $for-loop|05 end end i32.const 5 @@ -14284,12 +14149,12 @@ i32.const 7 i32.const 2032 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 + local.get $5 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14300,24 +14165,24 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 i32.load offset=4 local.set $4 - local.get $1 + local.get $5 i32.load offset=12 - local.tee $3 + local.tee $1 i32.const 2 i32.sub - local.tee $0 + local.tee $3 i32.const 0 - local.get $0 + local.get $3 i32.const 0 i32.gt_s select local.set $0 - loop $for-loop|06 + loop $for-loop|07 local.get $0 - local.get $3 + local.get $1 i32.lt_s if local.get $4 @@ -14331,7 +14196,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|06 + br $for-loop|07 end end i32.const 5 @@ -14339,12 +14204,12 @@ i32.const 7 i32.const 2080 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 + local.get $5 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14355,19 +14220,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $5 i32.load offset=4 - local.set $4 + local.set $1 i32.const 1 - local.get $1 + local.get $5 i32.load offset=12 local.tee $3 local.get $3 i32.const 1 i32.gt_s select - local.set $1 + local.set $0 i32.const 0 local.get $3 local.get $3 @@ -14375,23 +14239,23 @@ i32.gt_s select local.set $3 - loop $for-loop|08 - local.get $1 + loop $for-loop|09 + local.get $0 local.get $3 i32.lt_s if - local.get $4 local.get $1 + local.get $0 i32.const 2 i32.shl i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|08 + local.set $0 + br $for-loop|09 end end i32.const 5 @@ -14399,12 +14263,12 @@ i32.const 7 i32.const 2128 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 - local.get $0 - local.get $1 + local.get $5 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -14417,9 +14281,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 if i32.const 0 @@ -14431,9 +14295,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -14447,17 +14311,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 42 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -14472,9 +14336,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 1 i32.ne @@ -14488,9 +14352,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -14504,9 +14368,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop i32.const 42 i32.ne @@ -14520,9 +14384,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 if i32.const 0 @@ -14534,9 +14398,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -14550,17 +14414,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 43 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 1 i32.ne @@ -14574,9 +14438,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -14590,9 +14454,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -14607,17 +14471,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 44 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -14631,9 +14495,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -14647,9 +14511,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -14664,9 +14528,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -14681,17 +14545,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 45 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 3 i32.ne @@ -14705,9 +14569,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -14721,9 +14585,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -14738,9 +14602,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -14755,9 +14619,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -14771,7 +14635,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 2 i32.const 2 i32.const 8 @@ -14793,7 +14657,7 @@ i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 + local.get $3 local.get $0 i32.store offset=16 local.get $0 @@ -14820,9 +14684,9 @@ i32.const 3 i32.const 2224 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=12 - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#at i32.const 1 @@ -14835,7 +14699,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#at i32.const 4 @@ -14848,7 +14712,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const -1 call $~lib/array/Array#at i32.const 4 @@ -14861,7 +14725,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const -4 call $~lib/array/Array#at i32.const 1 @@ -14877,24 +14741,24 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/array/Array#constructor - local.tee $3 + local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store local.get $0 - local.get $1 local.get $3 + local.get $1 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -14908,9 +14772,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 3 i32.ne @@ -14939,19 +14803,19 @@ i32.const 3 i32.const 2272 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 call $~lib/array/Array#concat drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15002,30 +14866,30 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 46 call $~lib/array/Array#push drop - local.get $3 + local.get $1 i32.const 47 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store local.get $0 - local.get $1 local.get $3 + local.get $1 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15037,7 +14901,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.load offset=12 i32.const 2 i32.ne @@ -15147,9 +15011,9 @@ i32.const 3 i32.const 2304 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.load offset=12 if i32.const 0 @@ -15162,15 +15026,15 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store offset=8 local.get $0 - local.get $3 local.get $1 + local.get $3 call $~lib/array/Array#concat - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.load offset=12 i32.const 3 i32.ne @@ -15182,7 +15046,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.load offset=12 if i32.const 0 @@ -15198,9 +15062,9 @@ i32.const 3 i32.const 2336 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.const 3 i32.const 2147483647 @@ -15214,12 +15078,12 @@ i32.const 3 i32.const 2384 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15237,9 +15101,9 @@ i32.const 3 i32.const 2432 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 1 i32.const 3 i32.const 2147483647 @@ -15253,12 +15117,12 @@ i32.const 3 i32.const 2480 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15276,9 +15140,9 @@ i32.const 3 i32.const 2528 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 1 i32.const 2 i32.const 2147483647 @@ -15292,12 +15156,12 @@ i32.const 3 i32.const 2576 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15315,9 +15179,9 @@ i32.const 3 i32.const 2624 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 2 i32.const 2 i32.const 2147483647 @@ -15331,12 +15195,12 @@ i32.const 3 i32.const 2672 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15354,9 +15218,9 @@ i32.const 3 i32.const 2720 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.const 3 i32.const 4 @@ -15370,12 +15234,12 @@ i32.const 3 i32.const 2768 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15393,9 +15257,9 @@ i32.const 3 i32.const 2816 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 1 i32.const 3 i32.const 4 @@ -15409,12 +15273,12 @@ i32.const 3 i32.const 2864 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15432,9 +15296,9 @@ i32.const 3 i32.const 2912 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 1 i32.const 2 i32.const 4 @@ -15448,12 +15312,12 @@ i32.const 3 i32.const 2960 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15471,9 +15335,9 @@ i32.const 3 i32.const 3008 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.const -2 i32.const 2147483647 @@ -15487,12 +15351,12 @@ i32.const 3 i32.const 3056 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15510,9 +15374,9 @@ i32.const 3 i32.const 3104 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.const -2 i32.const -1 @@ -15526,12 +15390,12 @@ i32.const 3 i32.const 3152 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15549,9 +15413,9 @@ i32.const 3 i32.const 3200 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const -4 i32.const -3 i32.const -2 @@ -15565,12 +15429,12 @@ i32.const 3 i32.const 3248 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15588,9 +15452,9 @@ i32.const 3 i32.const 3296 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const -4 i32.const -3 i32.const -1 @@ -15604,12 +15468,12 @@ i32.const 3 i32.const 3344 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15627,9 +15491,9 @@ i32.const 3 i32.const 3392 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const -4 i32.const -3 i32.const 2147483647 @@ -15643,12 +15507,12 @@ i32.const 3 i32.const 3440 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15662,17 +15526,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 42 call $~lib/array/Array#unshift drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 4 i32.ne @@ -15686,9 +15550,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15702,9 +15566,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -15719,9 +15583,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -15736,9 +15600,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -15753,9 +15617,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -15770,17 +15634,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 41 call $~lib/array/Array#unshift drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 5 i32.ne @@ -15794,9 +15658,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15810,9 +15674,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 41 @@ -15827,9 +15691,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -15844,9 +15708,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#__get i32.const 43 @@ -15861,9 +15725,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#__get i32.const 44 @@ -15878,9 +15742,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 4 call $~lib/array/Array#__get i32.const 45 @@ -15899,7 +15763,7 @@ i32.store local.get $5 i32.load offset=12 - local.tee $1 + local.tee $3 i32.const 1 i32.lt_s if @@ -15918,15 +15782,15 @@ local.get $4 i32.const 4 i32.add - local.get $1 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 2 i32.shl - local.tee $1 + local.tee $3 call $~lib/memory/memory.copy - local.get $1 + local.get $3 local.get $4 i32.add i32.const 0 @@ -15948,9 +15812,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 4 i32.ne @@ -15964,9 +15828,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15980,9 +15844,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -15997,9 +15861,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -16014,9 +15878,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -16031,9 +15895,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -16048,9 +15912,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop global.set $std/array/i global.get $std/array/i @@ -16066,9 +15930,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 3 i32.ne @@ -16082,9 +15946,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16098,9 +15962,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -16115,9 +15979,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -16132,9 +15996,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -16153,14 +16017,14 @@ i32.const 3 i32.const 3488 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $1 + local.tee $3 i32.store offset=16 i32.const 3 i32.const 2 @@ -16171,7 +16035,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -16185,11 +16049,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 2 i32.const 4 call $~lib/array/Array#slice - local.tee $1 + local.tee $3 i32.store offset=16 i32.const 2 i32.const 2 @@ -16200,7 +16064,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -16214,11 +16078,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 1 i32.const 5 call $~lib/array/Array#slice - local.tee $1 + local.tee $3 i32.store offset=16 i32.const 4 i32.const 2 @@ -16229,7 +16093,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -16243,14 +16107,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 0 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 local.get $3 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16263,11 +16127,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const -2 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $1 + local.tee $3 i32.store offset=16 i32.const 2 i32.const 2 @@ -16278,7 +16142,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -16292,11 +16156,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 2 i32.const -1 call $~lib/array/Array#slice - local.tee $1 + local.tee $3 i32.store offset=16 i32.const 2 i32.const 2 @@ -16307,7 +16171,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -16321,11 +16185,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const -3 i32.const -1 call $~lib/array/Array#slice - local.tee $1 + local.tee $3 i32.store offset=16 i32.const 2 i32.const 2 @@ -16336,7 +16200,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -16349,15 +16213,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const -1 i32.const -3 call $~lib/array/Array#slice - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 if i32.const 0 @@ -16367,15 +16231,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 10 i32.const 2147483647 call $~lib/array/Array#slice - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 if i32.const 0 @@ -16387,56 +16251,56 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.load offset=12 - local.tee $1 + local.tee $3 if - local.get $3 + local.get $1 i32.load offset=4 local.set $0 - local.get $3 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $3 i32.const 1 i32.sub i32.const 2 i32.shl i32.add - local.set $6 + local.set $1 loop $while-continue|0 local.get $0 - local.get $6 + local.get $1 i32.lt_u if local.get $0 i32.load - local.set $1 + local.set $3 local.get $0 - local.get $6 + local.get $1 i32.load i32.store - local.get $6 local.get $1 + local.get $3 i32.store local.get $0 i32.const 4 i32.add local.set $0 - local.get $6 + local.get $1 i32.const 4 i32.sub - local.set $6 + local.set $1 br $while-continue|0 end end end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 3 i32.ne @@ -16450,9 +16314,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16466,9 +16330,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 44 @@ -16483,9 +16347,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -16500,9 +16364,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#__get i32.const 42 @@ -16517,49 +16381,49 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 43 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 44 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store i32.const 0 local.set $1 block $__inlined_func$~lib/array/Array#indexOf - local.get $0 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $0 select if i32.const -1 local.set $1 br $__inlined_func$~lib/array/Array#indexOf end - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|09 + local.set $3 + loop $while-continue|010 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -16572,7 +16436,7 @@ i32.const 1 i32.add local.set $1 - br $while-continue|09 + br $while-continue|010 end end i32.const -1 @@ -16591,33 +16455,33 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store i32.const 0 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf10 - local.get $0 + block $__inlined_func$~lib/array/Array#indexOf11 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $0 select if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#indexOf10 + br $__inlined_func$~lib/array/Array#indexOf11 end - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|011 + local.set $3 + loop $while-continue|012 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -16625,12 +16489,12 @@ i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf10 + br_if $__inlined_func$~lib/array/Array#indexOf11 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|011 + br $while-continue|012 end end i32.const -1 @@ -16651,33 +16515,33 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store i32.const 0 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf12 - local.get $0 + block $__inlined_func$~lib/array/Array#indexOf13 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $0 select if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#indexOf12 + br $__inlined_func$~lib/array/Array#indexOf13 end - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|013 + local.set $3 + loop $while-continue|014 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -16685,12 +16549,12 @@ i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf12 + br_if $__inlined_func$~lib/array/Array#indexOf13 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|013 + br $while-continue|014 end end i32.const -1 @@ -16711,33 +16575,33 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store i32.const 100 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf14 - local.get $0 + block $__inlined_func$~lib/array/Array#indexOf15 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.const 100 i32.le_s i32.const 1 - local.get $3 + local.get $0 select if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#indexOf14 + br $__inlined_func$~lib/array/Array#indexOf15 end - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|015 + local.set $3 + loop $while-continue|016 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -16745,12 +16609,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf14 + br_if $__inlined_func$~lib/array/Array#indexOf15 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|015 + br $while-continue|016 end end i32.const -1 @@ -16771,41 +16635,41 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store - block $__inlined_func$~lib/array/Array#indexOf16 - local.get $0 + block $__inlined_func$~lib/array/Array#indexOf17 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $4 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $4 select if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#indexOf16 + br $__inlined_func$~lib/array/Array#indexOf17 end - local.get $3 + local.get $4 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $1 - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|017 + local.set $3 + loop $while-continue|018 local.get $1 - local.get $3 + local.get $4 i32.lt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -16813,12 +16677,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf16 + br_if $__inlined_func$~lib/array/Array#indexOf17 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|017 + br $while-continue|018 end end i32.const -1 @@ -16839,41 +16703,41 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store - block $__inlined_func$~lib/array/Array#indexOf18 - local.get $0 + block $__inlined_func$~lib/array/Array#indexOf19 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $4 i32.const -2 i32.le_s i32.const 1 - local.get $3 + local.get $4 select if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#indexOf18 + br $__inlined_func$~lib/array/Array#indexOf19 end - local.get $3 + local.get $4 i32.const 2 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $1 - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|019 + local.set $3 + loop $while-continue|020 local.get $1 - local.get $3 + local.get $4 i32.lt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -16881,12 +16745,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf18 + br_if $__inlined_func$~lib/array/Array#indexOf19 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|019 + br $while-continue|020 end end i32.const -1 @@ -16907,41 +16771,41 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store - block $__inlined_func$~lib/array/Array#indexOf20 - local.get $0 + block $__inlined_func$~lib/array/Array#indexOf21 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $4 i32.const -4 i32.le_s i32.const 1 - local.get $3 + local.get $4 select if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#indexOf20 + br $__inlined_func$~lib/array/Array#indexOf21 end - local.get $3 + local.get $4 i32.const 4 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $1 - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|021 + local.set $3 + loop $while-continue|022 local.get $1 - local.get $3 + local.get $4 i32.lt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -16949,12 +16813,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf20 + br_if $__inlined_func$~lib/array/Array#indexOf21 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|021 + br $while-continue|022 end end i32.const -1 @@ -16975,33 +16839,33 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store i32.const 0 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf22 - local.get $0 + block $__inlined_func$~lib/array/Array#indexOf23 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $0 select if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#indexOf22 + br $__inlined_func$~lib/array/Array#indexOf23 end - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|023 + local.set $3 + loop $while-continue|024 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -17009,12 +16873,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf22 + br_if $__inlined_func$~lib/array/Array#indexOf23 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|023 + br $while-continue|024 end end i32.const -1 @@ -17035,33 +16899,33 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store i32.const 1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf24 - local.get $0 + block $__inlined_func$~lib/array/Array#indexOf25 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.const 1 i32.le_s i32.const 1 - local.get $3 + local.get $0 select if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#indexOf24 + br $__inlined_func$~lib/array/Array#indexOf25 end - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|025 + local.set $3 + loop $while-continue|026 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -17069,12 +16933,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf24 + br_if $__inlined_func$~lib/array/Array#indexOf25 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|025 + br $while-continue|026 end end i32.const -1 @@ -17095,33 +16959,33 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $3 i32.store i32.const 2 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf26 - local.get $0 + block $__inlined_func$~lib/array/Array#indexOf27 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.const 2 i32.le_s i32.const 1 - local.get $3 + local.get $0 select if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#indexOf26 + br $__inlined_func$~lib/array/Array#indexOf27 end - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|027 + local.set $3 + loop $while-continue|028 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -17129,12 +16993,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf26 + br_if $__inlined_func$~lib/array/Array#indexOf27 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|027 + br $while-continue|028 end end i32.const -1 @@ -17179,7 +17043,7 @@ local.get $3 i32.load offset=4 local.set $3 - loop $while-continue|02528 + loop $while-continue|025 local.get $1 local.get $4 i32.lt_s @@ -17198,7 +17062,7 @@ i32.const 1 i32.add local.set $1 - br $while-continue|02528 + br $while-continue|025 end end i32.const -1 @@ -17241,7 +17105,7 @@ local.get $3 i32.load offset=4 local.set $3 - loop $while-continue|026 + loop $while-continue|02629 local.get $1 local.get $4 i32.lt_s @@ -17260,7 +17124,7 @@ i32.const 1 i32.add local.set $1 - br $while-continue|026 + br $while-continue|02629 end end i32.const -1 @@ -17283,47 +17147,47 @@ i32.const 3 i32.const 3808 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=16 i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $3 i32.load offset=12 - local.set $3 + local.set $1 i32.const -1 local.set $0 block $__inlined_func$~lib/array/Array#lastIndexOf - local.get $1 + local.get $3 i32.load offset=12 local.tee $4 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $3 + local.get $1 local.get $4 i32.add local.get $4 i32.const 1 i32.sub - local.get $3 - local.get $3 + local.get $1 + local.get $1 local.get $4 i32.ge_s select - local.get $3 + local.get $1 i32.const 0 i32.lt_s select - local.set $3 - local.get $1 + local.set $1 + local.get $3 i32.load offset=4 local.set $4 - loop $while-continue|01 - local.get $3 + loop $while-continue|00 + local.get $1 i32.const 0 i32.ge_s if local.get $4 - local.get $3 + local.get $1 local.tee $0 i32.const 2 i32.shl @@ -17335,8 +17199,8 @@ local.get $0 i32.const 1 i32.sub - local.set $3 - br $while-continue|01 + local.set $1 + br $while-continue|00 end end i32.const -1 @@ -17355,43 +17219,43 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $3 i32.load offset=12 - local.set $3 + local.set $1 i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#lastIndexOf6 - local.get $1 + block $__inlined_func$~lib/array/Array#lastIndexOf5 + local.get $3 i32.load offset=12 local.tee $4 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf6 - local.get $3 + br_if $__inlined_func$~lib/array/Array#lastIndexOf5 + local.get $1 local.get $4 i32.add local.get $4 i32.const 1 i32.sub - local.get $3 - local.get $3 + local.get $1 + local.get $1 local.get $4 i32.ge_s select - local.get $3 + local.get $1 i32.const 0 i32.lt_s select - local.set $3 - local.get $1 + local.set $1 + local.get $3 i32.load offset=4 local.set $4 - loop $while-continue|07 - local.get $3 + loop $while-continue|06 + local.get $1 i32.const 0 i32.ge_s if local.get $4 - local.get $3 + local.get $1 local.tee $0 i32.const 2 i32.shl @@ -17399,12 +17263,12 @@ i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf6 + br_if $__inlined_func$~lib/array/Array#lastIndexOf5 local.get $0 i32.const 1 i32.sub - local.set $3 - br $while-continue|07 + local.set $1 + br $while-continue|06 end end i32.const -1 @@ -17421,15 +17285,15 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf8 - local.get $1 + block $__inlined_func$~lib/array/Array#lastIndexOf7 + local.get $3 i32.load offset=12 local.tee $0 i32.eqz if i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf8 + br $__inlined_func$~lib/array/Array#lastIndexOf7 end local.get $0 i32.const 1 @@ -17440,15 +17304,15 @@ i32.le_s select local.set $0 - local.get $1 + local.get $3 i32.load offset=4 - local.set $3 - loop $while-continue|029 + local.set $1 + loop $while-continue|030 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $0 i32.const 2 i32.shl @@ -17456,12 +17320,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf8 + br_if $__inlined_func$~lib/array/Array#lastIndexOf7 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|029 + br $while-continue|030 end end i32.const -1 @@ -17478,15 +17342,15 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf30 - local.get $1 + block $__inlined_func$~lib/array/Array#lastIndexOf31 + local.get $3 i32.load offset=12 local.tee $0 i32.eqz if i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf30 + br $__inlined_func$~lib/array/Array#lastIndexOf31 end local.get $0 i32.const 1 @@ -17497,15 +17361,15 @@ i32.le_s select local.set $0 - local.get $1 + local.get $3 i32.load offset=4 - local.set $3 - loop $while-continue|031 + local.set $1 + loop $while-continue|032 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $0 i32.const 2 i32.shl @@ -17513,12 +17377,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf30 + br_if $__inlined_func$~lib/array/Array#lastIndexOf31 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|031 + br $while-continue|032 end end i32.const -1 @@ -17533,29 +17397,29 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf32 - local.get $1 + block $__inlined_func$~lib/array/Array#lastIndexOf33 + local.get $3 i32.load offset=12 local.tee $0 i32.eqz if i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf32 + br $__inlined_func$~lib/array/Array#lastIndexOf33 end local.get $0 i32.const 2 i32.sub local.set $0 - local.get $1 + local.get $3 i32.load offset=4 - local.set $3 - loop $while-continue|033 + local.set $1 + loop $while-continue|034 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $0 i32.const 2 i32.shl @@ -17563,12 +17427,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf32 + br_if $__inlined_func$~lib/array/Array#lastIndexOf33 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|034 end end i32.const -1 @@ -17583,30 +17447,29 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf34 - local.get $1 - local.tee $0 + block $__inlined_func$~lib/array/Array#lastIndexOf35 + local.get $3 i32.load offset=12 - local.tee $1 + local.tee $0 i32.eqz if i32.const -1 local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf34 + br $__inlined_func$~lib/array/Array#lastIndexOf35 end - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|035 + local.set $3 + loop $while-continue|036 local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -17614,12 +17477,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf34 + br_if $__inlined_func$~lib/array/Array#lastIndexOf35 local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|035 + br $while-continue|036 end end i32.const -1 @@ -17638,12 +17501,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store i32.const 0 - local.set $3 - block $__inlined_func$~lib/array/Array#indexOf9 - local.get $1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf37 + local.get $3 i32.load offset=12 local.tee $0 i32.const 0 @@ -17653,37 +17516,37 @@ select if i32.const -1 - local.set $3 - br $__inlined_func$~lib/array/Array#indexOf9 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf37 end - local.get $1 + local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|010 + local.set $3 + loop $while-continue|038 local.get $0 - local.get $3 + local.get $1 i32.gt_s if - local.get $1 local.get $3 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 44 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf9 - local.get $3 + br_if $__inlined_func$~lib/array/Array#indexOf37 + local.get $1 i32.const 1 i32.add - local.set $3 - br $while-continue|010 + local.set $1 + br $while-continue|038 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.const 0 i32.lt_s if @@ -17696,12 +17559,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store i32.const 0 - local.set $3 - block $__inlined_func$~lib/array/Array#indexOf13 - local.get $1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf39 + local.get $3 i32.load offset=12 local.tee $0 i32.const 0 @@ -17711,37 +17574,37 @@ select if i32.const -1 - local.set $3 - br $__inlined_func$~lib/array/Array#indexOf13 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf39 end - local.get $1 + local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|014 + local.set $3 + loop $while-continue|040 local.get $0 - local.get $3 + local.get $1 i32.gt_s if - local.get $1 local.get $3 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf13 - local.get $3 + br_if $__inlined_func$~lib/array/Array#indexOf39 + local.get $1 i32.const 1 i32.add - local.set $3 - br $while-continue|014 + local.set $1 + br $while-continue|040 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.const 0 i32.lt_s if @@ -17754,12 +17617,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store i32.const 0 - local.set $3 - block $__inlined_func$~lib/array/Array#indexOf17 - local.get $1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf41 + local.get $3 i32.load offset=12 local.tee $0 i32.const 0 @@ -17769,37 +17632,37 @@ select if i32.const -1 - local.set $3 - br $__inlined_func$~lib/array/Array#indexOf17 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf41 end - local.get $1 + local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|018 + local.set $3 + loop $while-continue|042 local.get $0 - local.get $3 + local.get $1 i32.gt_s if - local.get $1 local.get $3 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf17 - local.get $3 + br_if $__inlined_func$~lib/array/Array#indexOf41 + local.get $1 i32.const 1 i32.add - local.set $3 - br $while-continue|018 + local.set $1 + br $while-continue|042 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.const 0 i32.ge_s if @@ -17812,12 +17675,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store i32.const 100 - local.set $3 - block $__inlined_func$~lib/array/Array#indexOf21 - local.get $1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf43 + local.get $3 i32.load offset=12 local.tee $0 i32.const 100 @@ -17827,37 +17690,37 @@ select if i32.const -1 - local.set $3 - br $__inlined_func$~lib/array/Array#indexOf21 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf43 end - local.get $1 + local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|022 + local.set $3 + loop $while-continue|044 local.get $0 - local.get $3 + local.get $1 i32.gt_s if - local.get $1 local.get $3 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf21 - local.get $3 + br_if $__inlined_func$~lib/array/Array#indexOf43 + local.get $1 i32.const 1 i32.add - local.set $3 - br $while-continue|022 + local.set $1 + br $while-continue|044 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.const 0 i32.ge_s if @@ -17872,7 +17735,7 @@ global.get $std/array/arr local.tee $3 i32.store - block $__inlined_func$~lib/array/Array#indexOf25 + block $__inlined_func$~lib/array/Array#indexOf45 local.get $3 i32.load offset=12 local.tee $4 @@ -17883,47 +17746,47 @@ select if i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf25 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf45 end local.get $4 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|028 - local.get $0 + local.set $3 + loop $while-continue|046 + local.get $1 local.get $4 i32.lt_s if + local.get $3 local.get $1 - local.get $0 i32.const 2 i32.shl i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf25 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf45 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|028 + local.set $1 + br $while-continue|046 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -17938,7 +17801,7 @@ global.get $std/array/arr local.tee $3 i32.store - block $__inlined_func$~lib/array/Array#indexOf30 + block $__inlined_func$~lib/array/Array#indexOf47 local.get $3 i32.load offset=12 local.tee $4 @@ -17949,47 +17812,47 @@ select if i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf30 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf47 end local.get $4 i32.const 2 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|032 - local.get $0 + local.set $3 + loop $while-continue|048 + local.get $1 local.get $4 i32.lt_s if + local.get $3 local.get $1 - local.get $0 i32.const 2 i32.shl i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf30 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf47 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|032 + local.set $1 + br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -18004,7 +17867,7 @@ global.get $std/array/arr local.tee $3 i32.store - block $__inlined_func$~lib/array/Array#indexOf34 + block $__inlined_func$~lib/array/Array#indexOf49 local.get $3 i32.load offset=12 local.tee $4 @@ -18015,47 +17878,47 @@ select if i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf34 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf49 end local.get $4 i32.const 4 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|036 - local.get $0 + local.set $3 + loop $while-continue|050 + local.get $1 local.get $4 i32.lt_s if + local.get $3 local.get $1 - local.get $0 i32.const 2 i32.shl i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf34 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf49 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|036 + local.set $1 + br $while-continue|050 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -18068,12 +17931,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store i32.const 0 - local.set $3 - block $__inlined_func$~lib/array/Array#indexOf38 - local.get $1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf51 + local.get $3 i32.load offset=12 local.tee $0 i32.const 0 @@ -18083,37 +17946,37 @@ select if i32.const -1 - local.set $3 - br $__inlined_func$~lib/array/Array#indexOf38 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf51 end - local.get $1 + local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|039 + local.set $3 + loop $while-continue|052 local.get $0 - local.get $3 + local.get $1 i32.gt_s if - local.get $1 local.get $3 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf38 - local.get $3 + br_if $__inlined_func$~lib/array/Array#indexOf51 + local.get $1 i32.const 1 i32.add - local.set $3 - br $while-continue|039 + local.set $1 + br $while-continue|052 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.const 0 i32.lt_s if @@ -18126,12 +17989,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store i32.const 1 - local.set $3 - block $__inlined_func$~lib/array/Array#indexOf41 - local.get $1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf53 + local.get $3 i32.load offset=12 local.tee $0 i32.const 1 @@ -18141,37 +18004,37 @@ select if i32.const -1 - local.set $3 - br $__inlined_func$~lib/array/Array#indexOf41 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf53 end - local.get $1 + local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|042 + local.set $3 + loop $while-continue|054 local.get $0 - local.get $3 + local.get $1 i32.gt_s if - local.get $1 local.get $3 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf41 - local.get $3 + br_if $__inlined_func$~lib/array/Array#indexOf53 + local.get $1 i32.const 1 i32.add - local.set $3 - br $while-continue|042 + local.set $1 + br $while-continue|054 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.const 0 i32.lt_s if @@ -18184,12 +18047,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store i32.const 2 - local.set $3 - block $__inlined_func$~lib/array/Array#indexOf44 - local.get $1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf55 + local.get $3 i32.load offset=12 local.tee $0 i32.const 2 @@ -18199,37 +18062,37 @@ select if i32.const -1 - local.set $3 - br $__inlined_func$~lib/array/Array#indexOf44 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf55 end - local.get $1 + local.get $3 i32.load offset=4 - local.set $1 - loop $while-continue|045 + local.set $3 + loop $while-continue|056 local.get $0 - local.get $3 + local.get $1 i32.gt_s if - local.get $1 local.get $3 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf44 - local.get $3 + br_if $__inlined_func$~lib/array/Array#indexOf55 + local.get $1 i32.const 1 i32.add - local.set $3 - br $while-continue|045 + local.set $1 + br $while-continue|056 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.const 0 i32.lt_s if @@ -18245,35 +18108,35 @@ i32.const 9 i32.const 3856 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store block $__inlined_func$~lib/array/Array#includes (result i32) i32.const 0 local.set $1 i32.const 0 - local.get $0 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $0 select br_if $__inlined_func$~lib/array/Array#includes drop - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|02736 + local.set $3 + loop $while-continue|03657 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if i32.const 1 i32.const 1 - local.get $0 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -18292,7 +18155,7 @@ i32.const 1 i32.add local.set $1 - br $while-continue|02736 + br $while-continue|03657 end end i32.const 0 @@ -18311,44 +18174,44 @@ i32.const 10 i32.const 3888 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store block $__inlined_func$~lib/array/Array#includes (result i32) i32.const 0 local.set $1 i32.const 0 - local.get $0 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $0 select br_if $__inlined_func$~lib/array/Array#includes drop - local.get $0 + local.get $3 i32.load offset=4 - local.set $0 - loop $while-continue|02846 + local.set $3 + loop $while-continue|037 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if i32.const 1 i32.const 1 - local.get $0 + local.get $3 local.get $1 i32.const 3 i32.shl i32.add f64.load - local.tee $11 - local.get $11 + local.tee $10 + local.get $10 f64.ne - local.get $11 + local.get $10 f64.const nan:0x8000000000000 f64.eq select @@ -18358,7 +18221,7 @@ i32.const 1 i32.add local.set $1 - br $while-continue|02846 + br $while-continue|037 end end i32.const 0 @@ -18374,18 +18237,18 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 i32.const 1 call $~lib/array/Array#splice drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 4 i32.ne @@ -18399,9 +18262,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18415,9 +18278,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 44 @@ -18432,9 +18295,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -18453,9 +18316,9 @@ i32.const 3 i32.const 3920 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.const 2147483647 call $~lib/array/Array#splice @@ -18468,12 +18331,12 @@ i32.const 3 i32.const 3968 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18490,12 +18353,12 @@ i32.const 3 i32.const 4016 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18513,9 +18376,9 @@ i32.const 3 i32.const 4048 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.const 0 call $~lib/array/Array#splice @@ -18528,12 +18391,12 @@ i32.const 3 i32.const 4096 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18550,12 +18413,12 @@ i32.const 3 i32.const 4128 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18573,9 +18436,9 @@ i32.const 3 i32.const 4176 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#splice @@ -18588,12 +18451,12 @@ i32.const 3 i32.const 4224 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18610,12 +18473,12 @@ i32.const 3 i32.const 4256 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18633,9 +18496,9 @@ i32.const 3 i32.const 4288 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 2 i32.const 2 call $~lib/array/Array#splice @@ -18648,12 +18511,12 @@ i32.const 3 i32.const 4336 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18670,12 +18533,12 @@ i32.const 3 i32.const 4368 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18693,9 +18556,9 @@ i32.const 3 i32.const 4400 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.const 1 call $~lib/array/Array#splice @@ -18708,12 +18571,12 @@ i32.const 3 i32.const 4448 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18730,12 +18593,12 @@ i32.const 3 i32.const 4480 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18753,9 +18616,9 @@ i32.const 3 i32.const 4528 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice @@ -18768,12 +18631,12 @@ i32.const 3 i32.const 4576 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18790,12 +18653,12 @@ i32.const 3 i32.const 4608 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18813,9 +18676,9 @@ i32.const 3 i32.const 4656 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const -2 i32.const 2147483647 call $~lib/array/Array#splice @@ -18828,12 +18691,12 @@ i32.const 3 i32.const 4704 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18850,12 +18713,12 @@ i32.const 3 i32.const 4736 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18873,9 +18736,9 @@ i32.const 3 i32.const 4768 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const -2 i32.const 1 call $~lib/array/Array#splice @@ -18888,12 +18751,12 @@ i32.const 3 i32.const 4816 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18910,12 +18773,12 @@ i32.const 3 i32.const 4848 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18933,9 +18796,9 @@ i32.const 3 i32.const 4896 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const -7 i32.const 1 call $~lib/array/Array#splice @@ -18948,12 +18811,12 @@ i32.const 3 i32.const 4944 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18970,12 +18833,12 @@ i32.const 3 i32.const 4976 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18993,9 +18856,9 @@ i32.const 3 i32.const 5024 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const -2 i32.const -1 call $~lib/array/Array#splice @@ -19008,12 +18871,12 @@ i32.const 3 i32.const 5072 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19030,12 +18893,12 @@ i32.const 3 i32.const 5104 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19053,9 +18916,9 @@ i32.const 3 i32.const 5152 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 1 i32.const -2 call $~lib/array/Array#splice @@ -19068,12 +18931,12 @@ i32.const 3 i32.const 5200 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19090,12 +18953,12 @@ i32.const 3 i32.const 5232 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19113,9 +18976,9 @@ i32.const 3 i32.const 5280 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 4 i32.const 0 call $~lib/array/Array#splice @@ -19128,12 +18991,12 @@ i32.const 3 i32.const 5328 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19150,12 +19013,12 @@ i32.const 3 i32.const 5360 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19173,9 +19036,9 @@ i32.const 3 i32.const 5408 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 7 i32.const 0 call $~lib/array/Array#splice @@ -19188,12 +19051,12 @@ i32.const 3 i32.const 5456 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19210,12 +19073,12 @@ i32.const 3 i32.const 5488 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19233,9 +19096,9 @@ i32.const 3 i32.const 5536 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 7 i32.const 5 call $~lib/array/Array#splice @@ -19248,12 +19111,12 @@ i32.const 3 i32.const 5584 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19270,12 +19133,12 @@ i32.const 3 i32.const 5616 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19299,9 +19162,9 @@ local.get $0 i32.const 1 call $~lib/array/Array#splice - local.tee $1 + local.tee $3 i32.store offset=12 - local.get $1 + local.get $3 i32.load offset=12 if i32.const 0 @@ -19322,7 +19185,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 5 i32.const 2 i32.const 8 @@ -19359,16 +19222,16 @@ i32.const 5 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 i32.const 2 call $~lib/array/Array#splice - local.tee $1 + local.tee $3 i32.store offset=12 - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -19380,7 +19243,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.load @@ -19394,7 +19257,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.load @@ -19463,74 +19326,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 3 i32.const 2 i32.const 11 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.load offset=4 i32.store offset=20 - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $2 + local.get $3 i32.const 1 i32.const 0 call $~lib/array/Array#__uset - local.get $2 + local.get $3 i32.const 2 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store i32.const 0 - local.get $2 + local.get $3 i32.load offset=12 local.tee $8 local.get $8 i32.const 0 i32.gt_s select - local.set $4 - local.get $1 + local.set $5 + local.get $0 i32.const 1 local.get $8 - local.get $4 + local.get $5 i32.sub - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 1 i32.gt_s select - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.tee $5 + local.tee $2 i32.const 2 i32.const 11 i32.const 0 @@ -19539,48 +19402,48 @@ i32.store local.get $7 i32.load offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.tee $0 - local.get $4 + local.tee $1 + local.get $5 i32.const 2 i32.shl i32.add - local.tee $1 - local.get $5 + local.tee $0 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy local.get $8 - local.get $4 + local.get $2 local.get $5 i32.add - local.tee $4 + local.tee $5 i32.ne if - local.get $1 local.get $0 - local.get $4 + local.get $1 + local.get $5 i32.const 2 i32.shl i32.add local.get $8 - local.get $4 + local.get $5 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end - local.get $2 + local.get $3 local.get $8 - local.get $5 + local.get $2 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 local.get $7 i32.store offset=24 local.get $7 @@ -19599,9 +19462,9 @@ local.get $7 i32.const 0 call $~lib/array/Array#__get - local.tee $1 + local.tee $0 i32.store offset=28 - local.get $1 + local.get $0 i32.eqz if i32.const 5824 @@ -19611,7 +19474,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load i32.const 1 i32.ne @@ -19623,7 +19486,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -19635,7 +19498,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 0 call $~lib/array/Array#__get if @@ -19647,12 +19510,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 call $~lib/array/Array#__get - local.tee $1 + local.tee $3 i32.store offset=28 - local.get $1 + local.get $3 i32.eqz if i32.const 5824 @@ -19662,7 +19525,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.load i32.const 2 i32.ne @@ -19676,59 +19539,59 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i32.const 0 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 i32.const 1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 i32.const 2 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 i32.const 3 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 5888 i32.store offset=8 i32.const 0 local.set $1 local.get $4 i32.load offset=12 - local.set $3 + local.set $0 block $__inlined_func$~lib/array/Array#findIndex - loop $for-loop|037 + loop $for-loop|059 local.get $1 - local.get $3 + local.get $0 local.get $4 i32.load offset=12 - local.tee $0 + local.tee $3 local.get $0 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -19751,7 +19614,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|037 + br $for-loop|059 end end i32.const -1 @@ -19769,28 +19632,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 5920 i32.store offset=8 i32.const 0 local.set $1 local.get $4 i32.load offset=12 - local.set $3 - block $__inlined_func$~lib/array/Array#findIndex38 - loop $for-loop|039 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex60 + loop $for-loop|061 local.get $1 - local.get $3 + local.get $0 local.get $4 i32.load offset=12 - local.tee $0 + local.tee $3 local.get $0 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -19808,12 +19671,12 @@ i32.const 5920 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex38 + br_if $__inlined_func$~lib/array/Array#findIndex60 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|039 + br $for-loop|061 end end i32.const -1 @@ -19833,28 +19696,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 5952 i32.store offset=8 i32.const 0 local.set $1 local.get $4 i32.load offset=12 - local.set $3 - block $__inlined_func$~lib/array/Array#findIndex40 - loop $for-loop|041 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex62 + loop $for-loop|063 local.get $1 - local.get $3 + local.get $0 local.get $4 i32.load offset=12 - local.tee $0 + local.tee $3 local.get $0 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -19872,12 +19735,12 @@ i32.const 5952 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex40 + br_if $__inlined_func$~lib/array/Array#findIndex62 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|041 + br $for-loop|063 end end i32.const -1 @@ -19897,28 +19760,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 5984 i32.store offset=8 i32.const 0 local.set $1 local.get $4 i32.load offset=12 - local.set $3 - block $__inlined_func$~lib/array/Array#findIndex42 - loop $for-loop|043 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex64 + loop $for-loop|065 local.get $1 - local.get $3 + local.get $0 local.get $4 i32.load offset=12 - local.tee $0 + local.tee $3 local.get $0 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -19936,12 +19799,12 @@ i32.const 5984 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex42 + br_if $__inlined_func$~lib/array/Array#findIndex64 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|043 + br $for-loop|065 end end i32.const -1 @@ -19962,9 +19825,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 8 i32.ne @@ -19977,28 +19840,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 6016 i32.store offset=8 i32.const 0 local.set $1 local.get $4 i32.load offset=12 - local.set $3 - block $__inlined_func$~lib/array/Array#findIndex44 - loop $for-loop|045 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex66 + loop $for-loop|067 local.get $1 - local.get $3 + local.get $0 local.get $4 i32.load offset=12 - local.tee $0 + local.tee $3 local.get $0 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -20016,12 +19879,12 @@ i32.const 6016 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex44 + br_if $__inlined_func$~lib/array/Array#findIndex66 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|045 + br $for-loop|067 end end i32.const -1 @@ -20042,55 +19905,55 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 6048 i32.store offset=8 i32.const 0 local.set $1 local.get $4 i32.load offset=12 - local.set $3 - block $__inlined_func$~lib/array/Array#findIndex46 - loop $for-loop|047 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex68 + loop $for-loop|069 local.get $1 - local.get $3 + local.get $0 local.get $4 i32.load offset=12 - local.tee $0 + local.tee $3 local.get $0 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -20108,12 +19971,12 @@ i32.const 6048 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex46 + br_if $__inlined_func$~lib/array/Array#findIndex68 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|047 + br $for-loop|069 end end i32.const -1 @@ -20134,9 +19997,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -20150,17 +20013,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#push drop @@ -20170,48 +20033,48 @@ i32.const 3 i32.const 6080 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 6128 i32.store offset=8 - local.get $1 + local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $0 + local.set $1 block $__inlined_func$~lib/array/Array#findLastIndex - loop $for-loop|048 - local.get $0 + loop $for-loop|070 + local.get $1 i32.const 0 i32.ge_s if - local.get $1 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 local.get $1 + local.get $0 i32.const 6128 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findLastIndex - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $for-loop|048 + local.set $1 + br $for-loop|070 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i if @@ -20225,43 +20088,43 @@ global.get $~lib/memory/__stack_pointer i32.const 6160 i32.store offset=8 - local.get $1 + local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex49 - loop $for-loop|050 - local.get $0 + local.set $1 + block $__inlined_func$~lib/array/Array#findLastIndex47 + loop $for-loop|048 + local.get $1 i32.const 0 i32.ge_s if - local.get $1 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 local.get $1 + local.get $0 i32.const 6160 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex49 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findLastIndex47 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $for-loop|050 + local.set $1 + br $for-loop|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -20277,43 +20140,43 @@ global.get $~lib/memory/__stack_pointer i32.const 6192 i32.store offset=8 - local.get $1 + local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex51 - loop $for-loop|052 - local.get $0 + local.set $1 + block $__inlined_func$~lib/array/Array#findLastIndex49 + loop $for-loop|050 + local.get $1 i32.const 0 i32.ge_s if - local.get $1 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 local.get $1 + local.get $0 i32.const 6192 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex51 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findLastIndex49 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $for-loop|052 + local.set $1 + br $for-loop|050 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -20329,14 +20192,13 @@ global.get $~lib/memory/__stack_pointer i32.const 6224 i32.store offset=8 - local.get $1 - local.tee $0 + local.get $0 i32.load offset=12 i32.const 1 i32.sub local.set $1 - block $__inlined_func$~lib/array/Array#findLastIndex53 - loop $for-loop|054 + block $__inlined_func$~lib/array/Array#findLastIndex51 + loop $for-loop|052 local.get $1 i32.const 0 i32.ge_s @@ -20355,12 +20217,12 @@ i32.const 6224 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex53 + br_if $__inlined_func$~lib/array/Array#findLastIndex51 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|054 + br $for-loop|052 end end i32.const -1 @@ -20380,11 +20242,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6256 i32.store offset=8 block $__inlined_func$~lib/array/Array#every (result i32) @@ -20393,13 +20255,13 @@ local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|055 + loop $for-loop|071 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -20412,11 +20274,11 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6256 @@ -20429,7 +20291,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|055 + br $for-loop|071 end end i32.const 1 @@ -20444,26 +20306,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6288 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every56 (result i32) + block $__inlined_func$~lib/array/Array#every72 (result i32) i32.const 0 local.set $0 local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|057 + loop $for-loop|073 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -20476,24 +20338,24 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6288 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every56 + br_if $__inlined_func$~lib/array/Array#every72 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|057 + br $for-loop|073 end end i32.const 1 @@ -20507,26 +20369,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6320 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every58 (result i32) + block $__inlined_func$~lib/array/Array#every74 (result i32) i32.const 0 local.set $0 local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|059 + loop $for-loop|075 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -20539,24 +20401,24 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6320 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every58 + br_if $__inlined_func$~lib/array/Array#every74 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|059 + br $for-loop|075 end end i32.const 1 @@ -20572,9 +20434,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 8 i32.ne @@ -20587,26 +20449,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6352 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every60 (result i32) + block $__inlined_func$~lib/array/Array#every76 (result i32) i32.const 0 local.set $0 local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|061 + loop $for-loop|077 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -20619,24 +20481,24 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6352 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every60 + br_if $__inlined_func$~lib/array/Array#every76 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|061 + br $for-loop|077 end end i32.const 1 @@ -20651,53 +20513,53 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6384 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every62 (result i32) + block $__inlined_func$~lib/array/Array#every78 (result i32) i32.const 0 local.set $0 local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|063 + loop $for-loop|079 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -20710,24 +20572,24 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6384 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every62 + br_if $__inlined_func$~lib/array/Array#every78 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|063 + br $for-loop|079 end end i32.const 1 @@ -20743,9 +20605,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -20759,26 +20621,26 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6416 i32.store offset=8 block $__inlined_func$~lib/array/Array#some (result i32) @@ -20787,13 +20649,13 @@ local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|064 + loop $for-loop|080 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -20806,11 +20668,11 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6416 @@ -20822,7 +20684,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|064 + br $for-loop|080 end end i32.const 0 @@ -20837,26 +20699,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6448 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some65 (result i32) + block $__inlined_func$~lib/array/Array#some81 (result i32) i32.const 0 local.set $0 local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|066 + loop $for-loop|082 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -20869,23 +20731,23 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6448 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some65 + br_if $__inlined_func$~lib/array/Array#some81 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|066 + br $for-loop|082 end end i32.const 0 @@ -20899,26 +20761,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6480 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some67 (result i32) + block $__inlined_func$~lib/array/Array#some83 (result i32) i32.const 0 local.set $0 local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|068 + loop $for-loop|084 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -20931,23 +20793,23 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6480 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some67 + br_if $__inlined_func$~lib/array/Array#some83 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|068 + br $for-loop|084 end end i32.const 0 @@ -20962,9 +20824,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 8 i32.ne @@ -20977,26 +20839,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6512 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some69 (result i32) + block $__inlined_func$~lib/array/Array#some85 (result i32) i32.const 0 local.set $0 local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|070 + loop $for-loop|086 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -21009,23 +20871,23 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6512 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some69 + br_if $__inlined_func$~lib/array/Array#some85 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|070 + br $for-loop|086 end end i32.const 0 @@ -21041,53 +20903,53 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 6544 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some71 (result i32) + block $__inlined_func$~lib/array/Array#some87 (result i32) i32.const 0 local.set $0 local.get $5 i32.load offset=12 local.set $4 - loop $for-loop|072 + loop $for-loop|088 local.get $0 local.get $4 local.get $5 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $4 i32.gt_s select @@ -21100,23 +20962,23 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 + local.get $3 local.get $0 local.get $5 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some71 + br_if $__inlined_func$~lib/array/Array#some87 drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|072 + br $for-loop|088 end end i32.const 0 @@ -21131,9 +20993,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -21147,44 +21009,44 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#push drop i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 6576 i32.store offset=8 i32.const 0 local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|073 + local.set $1 + loop $for-loop|057 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -21206,7 +21068,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|073 + br $for-loop|057 end end global.get $std/array/i @@ -21223,27 +21085,27 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 6608 i32.store offset=8 i32.const 0 local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|075 + local.set $1 + loop $for-loop|05989 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -21265,7 +21127,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|075 + br $for-loop|05989 end end global.get $std/array/i @@ -21281,9 +21143,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 8 i32.ne @@ -21298,27 +21160,27 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 6640 i32.store offset=8 i32.const 0 local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|077 + local.set $1 + loop $for-loop|062 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -21340,7 +21202,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|077 + br $for-loop|062 end end global.get $std/array/i @@ -21356,56 +21218,56 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 6672 i32.store offset=8 i32.const 0 local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|079 + local.set $1 + loop $for-loop|064 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -21427,7 +21289,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|079 + br $for-loop|064 end end global.get $std/array/i @@ -21443,9 +21305,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -21459,42 +21321,42 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 6704 i32.store offset=8 i32.const 0 local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|081 + local.set $1 + loop $for-loop|06790 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -21516,14 +21378,14 @@ i32.const 1 i32.add local.set $0 - br $for-loop|081 + br $for-loop|06790 end end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 100 i32.ne @@ -21537,83 +21399,83 @@ end i32.const 0 local.set $0 - loop $for-loop|082 + loop $for-loop|06991 local.get $0 i32.const 100 i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|082 + br $for-loop|06991 end end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $2 global.get $std/array/arr local.tee $8 i32.store - local.get $5 + local.get $2 i32.const 6736 i32.store offset=8 i32.const 0 - local.set $6 - local.get $5 + local.set $0 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 0 i32.store - local.get $1 + local.get $3 local.get $8 i32.load offset=12 - local.tee $4 + local.tee $5 i32.const 2 i32.const 9 i32.const 0 @@ -21622,52 +21484,52 @@ i32.store local.get $7 i32.load offset=4 - local.set $3 - loop $for-loop|04584 - local.get $6 - local.get $4 + local.set $4 + loop $for-loop|07093 + local.get $0 + local.get $5 local.get $8 i32.load offset=12 - local.tee $1 - local.get $1 - local.get $4 + local.tee $3 + local.get $3 + local.get $5 i32.gt_s select i32.lt_s if - local.get $6 + local.get $0 i32.const 2 i32.shl - local.tee $0 + local.tee $1 local.get $8 i32.load offset=4 i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $3 - i32.add local.get $1 - local.get $6 + local.get $4 + i32.add + local.get $3 + local.get $0 local.get $8 i32.const 6736 i32.load call_indirect $0 (type $i32_i32_i32_=>_f32) f32.store - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 - br $for-loop|04584 + local.set $0 + br $for-loop|07093 end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $2 local.get $7 i32.store offset=20 local.get $7 @@ -21687,9 +21549,9 @@ call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s @@ -21707,12 +21569,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 6768 i32.store offset=8 - local.get $1 + local.get $3 i32.const 6768 call $~lib/array/Array#map global.get $std/array/i @@ -21728,9 +21590,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 8 i32.ne @@ -21747,12 +21609,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 6800 i32.store offset=8 - local.get $1 + local.get $3 i32.const 6800 call $~lib/array/Array#map global.get $std/array/i @@ -21768,30 +21630,30 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop i32.const 0 @@ -21799,12 +21661,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 6832 i32.store offset=8 - local.get $1 + local.get $3 i32.const 6832 call $~lib/array/Array#map global.get $std/array/i @@ -21820,9 +21682,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -21836,35 +21698,35 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 6864 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.const 6864 call $~lib/array/Array#filter - local.tee $1 + local.tee $3 i32.store offset=20 - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -21881,12 +21743,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 6896 i32.store offset=8 - local.get $1 + local.get $3 i32.const 6896 call $~lib/array/Array#filter drop @@ -21903,9 +21765,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 8 i32.ne @@ -21922,12 +21784,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 6928 i32.store offset=8 - local.get $1 + local.get $3 i32.const 6928 call $~lib/array/Array#filter drop @@ -21944,30 +21806,30 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop i32.const 0 @@ -21975,12 +21837,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 6960 i32.store offset=8 - local.get $1 + local.get $3 i32.const 6960 call $~lib/array/Array#filter drop @@ -21997,9 +21859,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -22013,44 +21875,42 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 6992 i32.store offset=8 i32.const 0 - local.set $6 - i32.const 0 local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|085 + local.set $1 + loop $for-loop|094 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -22061,11 +21921,11 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength local.get $6 - local.get $1 + local.get $3 local.get $0 local.get $4 i32.const 6992 @@ -22076,7 +21936,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|085 + br $for-loop|094 end end local.get $6 @@ -22093,11 +21953,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7024 i32.store offset=8 i32.const 4 @@ -22106,16 +21966,16 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|087 + local.set $1 + loop $for-loop|096 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -22126,11 +21986,11 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength local.get $6 - local.get $1 + local.get $3 local.get $0 local.get $4 i32.const 7024 @@ -22141,7 +22001,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|087 + br $for-loop|096 end end local.get $6 @@ -22158,11 +22018,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7056 i32.store offset=8 i32.const 0 @@ -22171,16 +22031,16 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|089 + local.set $1 + loop $for-loop|098 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -22191,11 +22051,11 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength local.get $6 - local.get $1 + local.get $3 local.get $0 local.get $4 i32.const 7056 @@ -22206,7 +22066,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|089 + br $for-loop|098 end end local.get $6 @@ -22220,11 +22080,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7088 i32.store offset=8 i32.const 0 @@ -22233,16 +22093,16 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|091 + local.set $1 + loop $for-loop|0100 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -22253,11 +22113,11 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength local.get $6 - local.get $1 + local.get $3 local.get $0 local.get $4 i32.const 7088 @@ -22268,7 +22128,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|091 + br $for-loop|0100 end end local.get $6 @@ -22281,11 +22141,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7120 i32.store offset=8 i32.const 0 @@ -22294,16 +22154,16 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|093 + local.set $1 + loop $for-loop|0102 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -22314,11 +22174,11 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength local.get $6 - local.get $1 + local.get $3 local.get $0 local.get $4 i32.const 7120 @@ -22329,7 +22189,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|093 + br $for-loop|0102 end end local.get $6 @@ -22347,9 +22207,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 8 i32.ne @@ -22362,11 +22222,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7152 i32.store offset=8 i32.const 0 @@ -22375,16 +22235,16 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|095 + local.set $1 + loop $for-loop|0104 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -22395,11 +22255,11 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength local.get $6 - local.get $1 + local.get $3 local.get $0 local.get $4 i32.const 7152 @@ -22410,7 +22270,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|095 + br $for-loop|0104 end end local.get $6 @@ -22428,38 +22288,38 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std/array/arr local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7184 i32.store offset=8 i32.const 0 @@ -22468,16 +22328,16 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $3 - loop $for-loop|097 + local.set $1 + loop $for-loop|0106 local.get $0 - local.get $3 + local.get $1 local.get $4 i32.load offset=12 - local.tee $1 + local.tee $3 local.get $1 local.get $3 - i32.gt_s + i32.lt_s select i32.lt_s if @@ -22488,11 +22348,11 @@ i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength local.get $6 - local.get $1 + local.get $3 local.get $0 local.get $4 i32.const 7184 @@ -22503,7 +22363,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|097 + br $for-loop|0106 end end local.get $6 @@ -22521,9 +22381,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -22537,66 +22397,66 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $3 + global.get $std/array/arr + local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7216 i32.store offset=8 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=12 i32.const 1 i32.sub local.set $0 - loop $for-loop|098 + loop $for-loop|079107 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $4 i32.load offset=4 local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength - local.get $6 local.get $1 - local.get $0 local.get $3 + local.get $0 + local.get $4 i32.const 7216 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $1 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|098 + br $for-loop|079107 end end - local.get $6 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -22610,51 +22470,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $3 + global.get $std/array/arr + local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7248 i32.store offset=8 i32.const 4 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=12 i32.const 1 i32.sub local.set $0 - loop $for-loop|0100 + loop $for-loop|081 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $4 i32.load offset=4 local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength - local.get $6 local.get $1 - local.get $0 local.get $3 + local.get $0 + local.get $4 i32.const 7248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $1 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|0100 + br $for-loop|081 end end - local.get $6 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -22668,51 +22528,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $3 + global.get $std/array/arr + local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7280 i32.store offset=8 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=12 i32.const 1 i32.sub local.set $0 - loop $for-loop|0102 + loop $for-loop|083 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $4 i32.load offset=4 local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength - local.get $6 local.get $1 - local.get $0 local.get $3 + local.get $0 + local.get $4 i32.const 7280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $1 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|0102 + br $for-loop|083 end end - local.get $6 + local.get $1 i32.eqz if i32.const 0 @@ -22723,51 +22583,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $3 + global.get $std/array/arr + local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7312 i32.store offset=8 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=12 i32.const 1 i32.sub local.set $0 - loop $for-loop|0104 + loop $for-loop|085 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $4 i32.load offset=4 local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength - local.get $6 local.get $1 - local.get $0 local.get $3 + local.get $0 + local.get $4 i32.const 7312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $1 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|0104 + br $for-loop|085 end end - local.get $6 + local.get $1 if i32.const 0 i32.const 1552 @@ -22777,51 +22637,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $3 + global.get $std/array/arr + local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7344 i32.store offset=8 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=12 i32.const 1 i32.sub local.set $0 - loop $for-loop|0106 + loop $for-loop|087 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $4 i32.load offset=4 local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength - local.get $6 local.get $1 - local.get $0 local.get $3 + local.get $0 + local.get $4 i32.const 7344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $1 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|0106 + br $for-loop|087 end end - local.get $6 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -22836,9 +22696,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 i32.const 8 i32.ne @@ -22851,51 +22711,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $3 + global.get $std/array/arr + local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7376 i32.store offset=8 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=12 i32.const 1 i32.sub local.set $0 - loop $for-loop|0108 + loop $for-loop|090 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $4 i32.load offset=4 local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength - local.get $6 local.get $1 - local.get $0 local.get $3 + local.get $0 + local.get $4 i32.const 7376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $1 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|0108 + br $for-loop|090 end end - local.get $6 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -22910,78 +22770,78 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $3 + global.get $std/array/arr + local.tee $4 i32.store - local.get $1 + local.get $3 i32.const 7408 i32.store offset=8 i32.const 0 - local.set $6 - local.get $3 + local.set $1 + local.get $4 i32.load offset=12 i32.const 1 i32.sub local.set $0 - loop $for-loop|0110 + loop $for-loop|092 local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $4 i32.load offset=4 local.get $0 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength - local.get $6 local.get $1 - local.get $0 local.get $3 + local.get $0 + local.get $4 i32.const 7408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $1 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|0110 + br $for-loop|092 end end - local.get $6 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -22996,9 +22856,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 if i32.const 0 @@ -23010,33 +22870,33 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 2 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 3 call $~lib/array/Array#push drop @@ -23052,177 +22912,177 @@ local.tee $0 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.load offset=4 i32.store offset=24 - local.get $1 + local.get $3 call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=12 - local.get $1 + local.get $3 i32.const 100 i32.store - local.get $1 + local.get $3 i32.const 80 i32.store offset=4 local.get $0 i32.const 0 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 90 i32.store - local.get $1 + local.get $3 i32.const 90 i32.store offset=4 local.get $0 i32.const 1 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 + local.get $3 i32.const 70 i32.store - local.get $1 + local.get $3 i32.const 95 i32.store offset=4 local.get $0 i32.const 2 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=28 - local.get $1 + local.get $3 i32.const 100 i32.store - local.get $1 + local.get $3 i32.const 100 i32.store offset=4 local.get $0 i32.const 3 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=32 - local.get $1 + local.get $3 i32.const 80 i32.store - local.get $1 + local.get $3 i32.const 110 i32.store offset=4 local.get $0 i32.const 4 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=36 - local.get $1 + local.get $3 i32.const 110 i32.store - local.get $1 + local.get $3 i32.const 115 i32.store offset=4 local.get $0 i32.const 5 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=40 - local.get $1 + local.get $3 i32.const 100 i32.store - local.get $1 + local.get $3 i32.const 120 i32.store offset=4 local.get $0 i32.const 6 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=44 - local.get $1 + local.get $3 i32.const 70 i32.store - local.get $1 + local.get $3 i32.const 125 i32.store offset=4 local.get $0 i32.const 7 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=48 - local.get $1 + local.get $3 i32.const 70 i32.store - local.get $1 + local.get $3 i32.const 130 i32.store offset=4 local.get $0 i32.const 8 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=52 - local.get $1 + local.get $3 i32.const 100 i32.store - local.get $1 + local.get $3 i32.const 135 i32.store offset=4 local.get $0 i32.const 9 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=56 - local.get $1 + local.get $3 i32.const 75 i32.store - local.get $1 + local.get $3 i32.const 140 i32.store offset=4 local.get $0 i32.const 10 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=60 - local.get $1 + local.get $3 i32.const 70 i32.store - local.get $1 + local.get $3 i32.const 140 i32.store offset=4 local.get $0 i32.const 11 - local.get $1 + local.get $3 call $~lib/array/Array#__uset local.get $0 global.set $std/array/inputStabArr @@ -23235,177 +23095,177 @@ local.tee $0 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.load offset=4 i32.store offset=20 - local.get $1 + local.get $3 call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=64 - local.get $1 + local.get $3 i32.const 70 i32.store - local.get $1 + local.get $3 i32.const 95 i32.store offset=4 local.get $0 i32.const 0 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=68 - local.get $1 + local.get $3 i32.const 70 i32.store - local.get $1 + local.get $3 i32.const 125 i32.store offset=4 local.get $0 i32.const 1 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=72 - local.get $1 + local.get $3 i32.const 70 i32.store - local.get $1 + local.get $3 i32.const 130 i32.store offset=4 local.get $0 i32.const 2 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=76 - local.get $1 + local.get $3 i32.const 70 i32.store - local.get $1 + local.get $3 i32.const 140 i32.store offset=4 local.get $0 i32.const 3 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=80 - local.get $1 + local.get $3 i32.const 75 i32.store - local.get $1 + local.get $3 i32.const 140 i32.store offset=4 local.get $0 i32.const 4 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=84 - local.get $1 + local.get $3 i32.const 80 i32.store - local.get $1 + local.get $3 i32.const 110 i32.store offset=4 local.get $0 i32.const 5 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=88 - local.get $1 + local.get $3 i32.const 90 i32.store - local.get $1 + local.get $3 i32.const 90 i32.store offset=4 local.get $0 i32.const 6 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=92 - local.get $1 + local.get $3 i32.const 100 i32.store - local.get $1 + local.get $3 i32.const 80 i32.store offset=4 local.get $0 i32.const 7 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=96 - local.get $1 + local.get $3 i32.const 100 i32.store - local.get $1 + local.get $3 i32.const 100 i32.store offset=4 local.get $0 i32.const 8 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=100 - local.get $1 + local.get $3 i32.const 100 i32.store - local.get $1 + local.get $3 i32.const 120 i32.store offset=4 local.get $0 i32.const 9 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=104 - local.get $1 + local.get $3 i32.const 100 i32.store - local.get $1 + local.get $3 i32.const 135 i32.store offset=4 local.get $0 i32.const 10 - local.get $1 + local.get $3 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $1 + local.tee $3 i32.store offset=108 - local.get $1 + local.get $3 i32.const 110 i32.store - local.get $1 + local.get $3 i32.const 115 i32.store offset=4 local.get $0 i32.const 11 - local.get $1 + local.get $3 call $~lib/array/Array#__uset local.get $0 global.set $std/array/outputStabArr @@ -23426,12 +23286,12 @@ i32.const 9 i32.const 7744 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -23459,12 +23319,12 @@ i32.const 9 i32.const 7840 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -23482,6 +23342,8 @@ i32.const 7904 call $~lib/rt/__newArray local.tee $5 + local.set $0 + local.get $5 i32.store offset=112 i32.const 0 global.set $~argumentsLength @@ -23494,15 +23356,15 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of148 - block $0of149 - block $outOfRange50 + block $1of18 + block $0of19 + block $outOfRange10 global.get $~argumentsLength - br_table $0of149 $1of148 $outOfRange50 + br_table $0of19 $1of18 $outOfRange10 end unreachable end @@ -23512,9 +23374,9 @@ i32.const 8000 i32.store end - local.get $5 + local.get $0 i32.load offset=4 - local.get $5 + local.get $0 i32.load offset=12 local.get $1 call $~lib/util/sort/SORT @@ -23537,7 +23399,7 @@ i32.const 0 local.get $5 i32.load offset=12 - local.tee $0 + local.tee $3 local.get $4 i32.load offset=12 i32.ne @@ -23550,22 +23412,22 @@ br_if $__inlined_func$std/array/isArraysEqual drop loop $for-loop|026 - local.get $0 local.get $1 - i32.gt_s + local.get $3 + i32.lt_s if local.get $5 local.get $1 call $~lib/array/Array#__get - local.tee $11 - local.get $11 + local.tee $10 + local.get $10 f64.ne if (result i32) local.get $4 local.get $1 call $~lib/array/Array#__get - local.tee $11 - local.get $11 + local.tee $10 + local.get $10 f64.ne else i32.const 0 @@ -23607,7 +23469,9 @@ i32.const 3 i32.const 8128 call $~lib/rt/__newArray - local.tee $0 + local.tee $4 + local.set $0 + local.get $4 i32.store offset=116 i32.const 0 global.set $~argumentsLength @@ -23620,15 +23484,15 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1102 - block $0of1103 - block $outOfRange104 + block $1of1140 + block $0of1141 + block $outOfRange142 global.get $~argumentsLength - br_table $0of1103 $1of1102 $outOfRange104 + br_table $0of1141 $1of1140 $outOfRange142 end unreachable end @@ -23653,12 +23517,12 @@ i32.const 3 i32.const 8208 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 - local.get $0 - local.get $1 + local.get $4 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23689,12 +23553,12 @@ i32.const 7 i32.const 8336 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=8 local.get $0 - local.get $1 + local.get $3 call $std/array/isArraysEqual i32.eqz if @@ -23727,7 +23591,7 @@ i32.const 3 i32.const 8448 call $~lib/rt/__newArray - local.tee $2 + local.tee $8 i32.store offset=132 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -23735,7 +23599,7 @@ i32.const 3 i32.const 8480 call $~lib/rt/__newArray - local.tee $8 + local.tee $7 i32.store offset=136 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -23743,12 +23607,12 @@ i32.const 3 i32.const 8528 call $~lib/rt/__newArray - local.tee $10 + local.tee $11 i32.store offset=140 global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $7 + local.tee $2 i32.store offset=144 global.get $~lib/memory/__stack_pointer i32.const 128 @@ -23763,12 +23627,12 @@ global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray - local.tee $3 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray - local.tee $1 + local.tee $3 i32.store offset=160 local.get $0 call $std/array/assertSortedDefault @@ -23796,7 +23660,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $8 call $std/array/assertSortedDefault i32.const 2 i32.const 2 @@ -23807,7 +23671,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $2 + local.get $8 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -23820,10 +23684,10 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $7 call $std/array/assertSortedDefault - local.get $8 - local.get $10 + local.get $7 + local.get $11 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23835,10 +23699,10 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $2 call $std/array/assertSortedDefault - local.get $7 - local.get $10 + local.get $2 + local.get $11 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -23853,7 +23717,7 @@ local.get $5 call $std/array/assertSortedDefault local.get $5 - local.get $10 + local.get $11 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -23868,7 +23732,7 @@ local.get $4 call $std/array/assertSortedDefault local.get $4 - local.get $10 + local.get $11 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -23880,10 +23744,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 call $std/array/assertSortedDefault - local.get $3 - local.get $10 + local.get $1 + local.get $11 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -23895,12 +23759,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 call $std/array/assertSortedDefault i32.const 0 - local.set $6 - i32.const 0 - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -23908,60 +23770,60 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $2 i64.const 0 i64.store - local.get $7 + local.get $2 i64.const 0 i64.store offset=8 - local.get $7 + local.get $2 i64.const 0 i64.store offset=16 - local.get $7 + local.get $2 global.get $std/array/inputStabArr local.tee $5 i32.store offset=8 - local.get $7 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 0 i32.store i32.const 0 local.get $5 i32.load offset=12 - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 0 i32.gt_s select local.set $0 - local.get $1 local.get $3 + local.get $1 local.get $0 i32.sub - local.tee $1 + local.tee $3 i32.const 0 - local.get $1 + local.get $3 i32.const 0 i32.gt_s select - local.tee $1 + local.tee $3 i32.const 2 i32.const 19 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $8 i32.store - local.get $2 + local.get $8 i32.load offset=4 local.set $4 local.get $5 @@ -23970,34 +23832,36 @@ i32.const 2 i32.shl i32.add - local.set $3 - local.get $1 + local.set $1 + i32.const 0 + local.set $5 + local.get $3 i32.const 2 i32.shl local.set $0 - loop $while-continue|00 + loop $while-continue|011 local.get $0 - local.get $6 + local.get $5 i32.gt_u if local.get $4 - local.get $6 + local.get $5 i32.add - local.get $3 - local.get $6 + local.get $1 + local.get $5 i32.add i32.load - local.tee $1 + local.tee $3 i32.store - local.get $2 - local.get $1 + local.get $8 + local.get $3 i32.const 1 call $~lib/rt/itcms/__link - local.get $6 + local.get $5 i32.const 4 i32.add - local.set $6 - br $while-continue|00 + local.set $5 + br $while-continue|011 end end global.get $~lib/memory/__stack_pointer @@ -24005,56 +23869,56 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $2 + local.tee $3 + local.get $8 i32.store - local.get $1 + local.get $3 i32.const 8672 i32.store offset=4 - local.get $2 + local.get $8 i32.load offset=4 - local.get $2 + local.get $8 i32.load offset=12 i32.const 8672 call $~lib/util/sort/SORT - local.get $7 local.get $2 + local.get $8 i32.store offset=12 i32.const 1 - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer global.get $std/array/inputStabArr - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 - local.set $3 - loop $for-loop|01 - local.get $3 - local.get $8 + local.set $1 + loop $for-loop|012 + local.get $1 + local.get $7 i32.gt_s if block $for-break0 global.get $~lib/memory/__stack_pointer - local.get $2 local.get $8 + local.get $7 call $~lib/array/Array#__get local.tee $4 i32.store offset=16 global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/outputStabArr - local.tee $1 + local.tee $3 i32.store local.get $0 - local.get $1 - local.get $8 + local.get $3 + local.get $7 call $~lib/array/Array#__get - local.tee $1 + local.tee $3 i32.store offset=20 local.get $4 i32.load - local.get $1 + local.get $3 i32.load i32.ne if (result i32) @@ -24062,24 +23926,24 @@ else local.get $4 i32.load offset=4 - local.get $1 + local.get $3 i32.load offset=4 i32.ne end if i32.const 0 - local.set $6 + local.set $5 br $for-break0 end - local.get $8 + local.get $7 i32.const 1 i32.add - local.set $8 - br $for-loop|01 + local.set $7 + br $for-loop|012 end end end - local.get $6 + local.get $5 i32.eqz if i32.const 0 @@ -24101,7 +23965,7 @@ global.get $~lib/memory/__stack_pointer i32.const 257 call $std/array/createRandomOrderedArray - local.tee $1 + local.tee $3 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 8704 @@ -24118,26 +23982,26 @@ global.get $~lib/memory/__stack_pointer i32.const 8768 i32.store offset=8 - local.get $1 + local.get $3 i32.const 8768 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 8800 i32.store offset=8 - local.get $1 + local.get $3 i32.const 8800 call $std/array/assertSorted i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer local.tee $4 i64.const 0 @@ -24149,12 +24013,12 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 25 call $~lib/rt/itcms/__new @@ -24180,21 +24044,21 @@ i32.const 32 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.const 32 call $~lib/memory/memory.fill local.get $5 - local.get $1 + local.get $3 i32.store local.get $5 - local.get $1 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link local.get $5 - local.get $1 + local.get $3 i32.store offset=4 local.get $5 i32.const 32 @@ -24209,38 +24073,38 @@ local.get $4 local.get $5 i32.store - loop $for-loop|0105 - local.get $0 + loop $for-loop|0143 + local.get $1 i32.const 2 i32.lt_s if global.get $~lib/memory/__stack_pointer i32.const 1 call $~lib/array/Array#constructor - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.const 1 - local.get $0 + local.get $1 i32.sub call $~lib/array/Array#__set local.get $5 - local.get $0 local.get $1 + local.get $3 call $~lib/array/Array<~lib/array/Array>#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|0105 + local.set $1 + br $for-loop|0143 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $0 local.get $5 i32.store offset=156 global.get $~lib/memory/__stack_pointer @@ -24250,89 +24114,89 @@ i32.const 8832 call $std/array/assertSorted<~lib/array/Array> i32.const 0 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i64.const 0 i64.store - local.get $3 + local.get $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 28 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store - local.get $5 + local.get $3 i32.const 0 i32.store - local.get $5 + local.get $3 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link - local.get $5 + local.get $3 i32.const 0 i32.store offset=4 - local.get $5 + local.get $3 i32.const 0 i32.store offset=8 - local.get $5 + local.get $3 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 2048 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store offset=4 - local.get $1 + local.get $4 i32.const 0 i32.const 2048 call $~lib/memory/memory.fill - local.get $5 - local.get $1 + local.get $3 + local.get $4 i32.store - local.get $5 - local.get $1 + local.get $3 + local.get $4 i32.const 0 call $~lib/rt/itcms/__link - local.get $5 - local.get $1 + local.get $3 + local.get $4 i32.store offset=4 - local.get $5 + local.get $3 i32.const 2048 i32.store offset=8 - local.get $5 + local.get $3 i32.const 512 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 local.get $3 - local.get $5 i32.store - loop $for-loop|056 - local.get $4 + loop $for-loop|014 + local.get $5 i32.const 512 i32.lt_s if @@ -24343,20 +24207,20 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 4 i32.const 27 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 511 - local.get $4 + local.get $5 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -24364,30 +24228,30 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 + local.get $3 local.get $5 - local.get $4 - local.get $1 + local.get $0 call $~lib/array/Array<~lib/array/Array>#__set - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 - br $for-loop|056 + local.set $5 + br $for-loop|014 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $5 + local.get $1 + local.get $3 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 8864 i32.store offset=8 - local.get $5 + local.get $3 i32.const 8864 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -24404,12 +24268,14 @@ i32.const 30 i32.const 9104 call $~lib/rt/__newArray - local.tee $5 + local.tee $7 i32.store offset=152 i32.const 1 global.set $~argumentsLength + local.get $1 + local.set $3 i32.const 0 - local.set $10 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24417,22 +24283,22 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of158 - block $0of159 - block $outOfRange60 + block $1of116 + block $0of117 + block $outOfRange18 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of159 $1of158 $outOfRange60 + br_table $0of117 $1of116 $outOfRange18 end unreachable end i32.const 9152 - local.set $10 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 9152 i32.store @@ -24444,19 +24310,19 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $3 i32.load offset=4 - local.get $1 + local.get $3 i32.load offset=12 - local.get $10 + local.get $2 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $1 + local.get $3 i32.store block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) local.get $0 @@ -24466,41 +24332,41 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store i32.const 1 - local.set $6 - local.get $1 + local.set $8 + local.get $3 i32.load offset=12 local.set $0 - loop $for-loop|062 + loop $for-loop|019 local.get $0 - local.get $6 + local.get $8 i32.gt_s if - local.get $1 - local.get $6 + local.get $3 + local.get $8 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $1 - local.get $6 + local.get $3 + local.get $8 call $~lib/array/Array#__get - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=4 i32.const 2 global.set $~argumentsLength + local.get $5 local.get $4 - local.get $3 - local.get $10 + local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -24513,11 +24379,11 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null> end - local.get $6 + local.get $8 i32.const 1 i32.add - local.set $6 - br $for-loop|062 + local.set $8 + br $for-loop|019 end end global.get $~lib/memory/__stack_pointer @@ -24545,7 +24411,7 @@ global.set $~lib/memory/__stack_pointer block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> (result i32) i32.const 0 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -24553,55 +24419,55 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $folding-inner163 - block $folding-inner064 + block $folding-inner1 + block $folding-inner020 local.get $1 i32.load offset=12 - local.tee $0 - local.get $5 + local.tee $3 + local.get $7 i32.load offset=12 i32.ne - br_if $folding-inner064 + br_if $folding-inner020 local.get $1 - local.get $5 + local.get $7 i32.eq - br_if $folding-inner163 - loop $for-loop|065 + br_if $folding-inner1 + loop $for-loop|038 local.get $0 - local.get $2 - i32.gt_s + local.get $3 + i32.lt_s if local.get $1 - local.get $2 + local.get $0 call $~lib/array/Array#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store local.get $5 - local.get $2 + i32.store + local.get $7 + local.get $0 call $~lib/array/Array#__get - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=4 + local.get $5 local.get $4 - local.get $3 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner064 - local.get $2 + br_if $folding-inner020 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|065 + local.set $0 + br $for-loop|038 end end - br $folding-inner163 + br $folding-inner1 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -24626,28 +24492,28 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.const 400 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $2 + local.tee $6 i32.store - loop $for-loop|0106115 - local.get $0 + loop $for-loop|0144 + local.get $1 i32.const 400 i32.lt_s if @@ -24655,9 +24521,9 @@ f64.const 32 f64.mul i32.trunc_f64_s - local.set $7 + local.set $5 i32.const 0 - local.set $6 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -24665,31 +24531,31 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i64.const 0 i64.store - local.get $3 + local.get $0 i32.const 0 i32.store offset=8 i32.const 9024 - local.set $1 - local.get $3 + local.set $3 + local.get $0 i32.const 9024 i32.store - loop $for-loop|067 - local.get $6 - local.get $7 - i32.lt_s + loop $for-loop|022 + local.get $5 + local.get $8 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 7488 i32.store offset=4 call $~lib/math/NativeMath.random global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i32.const 7488 i32.store offset=8 i32.const 7484 @@ -24700,20 +24566,20 @@ f64.mul f64.floor i32.trunc_f64_s - local.set $4 - local.get $3 + local.set $7 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/string/String#charAt - local.get $4 + local.get $7 i32.const 7484 i32.load i32.const 1 @@ -24725,17 +24591,17 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9024 - local.set $3 + local.set $0 br $__inlined_func$~lib/string/String#charAt end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $0 i32.store - local.get $3 - local.get $4 + local.get $0 + local.get $7 i32.const 1 i32.shl i32.const 7488 @@ -24748,19 +24614,19 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 - local.get $5 - local.get $1 + local.get $4 local.get $3 + local.get $0 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store - local.get $6 + local.get $8 i32.const 1 i32.add - local.set $6 - br $for-loop|067 + local.set $8 + br $for-loop|022 end end global.get $~lib/memory/__stack_pointer @@ -24768,30 +24634,30 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=4 - local.get $2 - local.get $0 + local.get $6 local.get $1 + local.get $3 call $~lib/array/Array<~lib/array/Array>#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|0106115 + local.set $1 + br $for-loop|0144 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 local.get $2 + local.get $6 i32.store offset=156 i32.const 1 global.set $~argumentsLength i32.const 0 - local.set $6 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24799,28 +24665,28 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1107 - block $0of1108 - block $outOfRange109 + block $1of1145 + block $0of1146 + block $outOfRange147 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of1108 $1of1107 $outOfRange109 + br_table $0of1146 $1of1145 $outOfRange147 end unreachable end i32.const 9184 - local.set $6 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 9184 i32.store end - local.get $2 local.get $6 + local.get $1 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24831,40 +24697,40 @@ i32.const 34 i32.const 9216 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $3 + i32.store offset=164 + local.get $1 i32.const 9312 i32.store offset=168 - local.get $1 + local.get $3 i32.load offset=4 - local.set $8 - local.get $1 + local.set $7 + local.get $3 i32.load offset=12 - local.set $1 + local.set $3 i32.const 0 local.set $0 i32.const 0 local.set $6 - local.get $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinBooleanArray - local.get $1 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $8 i32.const 0 i32.lt_s if @@ -24876,25 +24742,25 @@ local.set $1 br $__inlined_func$~lib/util/string/joinBooleanArray end - block $folding-inner069 - local.get $2 + block $folding-inner0115 + local.get $8 i32.eqz if i32.const 9248 i32.const 9280 - local.get $8 + local.get $7 i32.load8_u select local.set $1 - br $folding-inner069 + br $folding-inner0115 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $8 i32.const 9308 i32.load i32.const 1 i32.shr_u - local.tee $7 + local.tee $2 i32.const 5 i32.add i32.mul @@ -24908,12 +24774,12 @@ local.tee $1 i32.store loop $for-loop|1 - local.get $2 local.get $6 - i32.gt_s + local.get $8 + i32.lt_s if local.get $6 - local.get $8 + local.get $7 i32.add i32.load8_u local.tee $3 @@ -24938,7 +24804,7 @@ local.get $5 i32.add local.set $0 - local.get $7 + local.get $2 if local.get $1 local.get $0 @@ -24946,12 +24812,12 @@ i32.shl i32.add i32.const 9312 - local.get $7 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $7 + local.get $2 i32.add local.set $0 end @@ -24962,7 +24828,7 @@ br $for-loop|1 end end - local.get $2 + local.get $7 local.get $8 i32.add i32.load8_u @@ -24988,14 +24854,14 @@ local.get $0 local.get $5 i32.add - local.tee $0 + local.tee $3 i32.gt_s if local.get $1 - local.get $0 + local.get $3 call $~lib/string/String#substring local.set $1 - br $folding-inner069 + br $folding-inner0115 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25009,10 +24875,10 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $3 local.get $1 i32.store - local.get $0 + local.get $3 i32.const 9344 i32.store offset=8 local.get $1 @@ -25034,10 +24900,10 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store offset=164 - local.get $1 + local.get $3 i32.const 9024 i32.store offset=168 local.get $0 @@ -25045,10 +24911,10 @@ call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 11200 i32.store offset=8 local.get $0 @@ -25070,10 +24936,10 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store offset=164 - local.get $1 + local.get $3 i32.const 11264 i32.store offset=168 local.get $0 @@ -25081,10 +24947,10 @@ call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 11200 i32.store offset=8 local.get $0 @@ -25106,10 +24972,10 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store offset=164 - local.get $1 + local.get $3 i32.const 11328 i32.store offset=168 local.get $0 @@ -25117,10 +24983,10 @@ call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 11360 i32.store offset=8 local.get $0 @@ -25142,10 +25008,10 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store offset=164 - local.get $1 + local.get $3 i32.const 11520 i32.store offset=168 local.get $0 @@ -25155,10 +25021,10 @@ call $~lib/util/string/joinFloatArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 12688 i32.store offset=8 local.get $0 @@ -25180,10 +25046,10 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store offset=164 - local.get $1 + local.get $3 i32.const 9024 i32.store offset=168 local.get $0 @@ -25191,10 +25057,10 @@ call $~lib/array/Array<~lib/string/String|null>#join local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 12800 i32.store offset=8 local.get $0 @@ -25210,7 +25076,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 3 i32.const 2 i32.const 11 @@ -25236,7 +25102,7 @@ i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 + local.get $3 local.get $0 i32.store offset=152 global.get $~lib/memory/__stack_pointer @@ -25246,10 +25112,10 @@ call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 12928 i32.store offset=8 local.get $0 @@ -25265,7 +25131,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 2 i32.const 2 i32.const 8 @@ -25287,7 +25153,7 @@ i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 + local.get $3 local.get $0 i32.store offset=160 global.get $~lib/memory/__stack_pointer @@ -25297,10 +25163,10 @@ call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 13024 i32.store offset=8 local.get $0 @@ -25321,7 +25187,7 @@ i32.const 3 i32.const 13120 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -25337,7 +25203,7 @@ i32.const 3 i32.const 13184 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25347,14 +25213,14 @@ call $~lib/rt/__newArray local.tee $0 i32.store offset=144 - local.get $1 + local.get $3 call $~lib/array/Array#toString local.set $5 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $5 i32.store - local.get $1 + local.get $3 i32.const 9024 i32.store offset=8 local.get $5 @@ -25373,10 +25239,10 @@ call $~lib/array/Array#toString local.set $4 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $4 i32.store - local.get $1 + local.get $3 i32.const 12800 i32.store offset=8 local.get $4 @@ -25391,17 +25257,17 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 call $~lib/array/Array#toString - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $3 - i32.store + local.tee $3 local.get $1 + i32.store + local.get $3 i32.const 13264 i32.store offset=8 - local.get $3 + local.get $1 i32.const 13264 call $~lib/string/String.__eq i32.eqz @@ -25417,10 +25283,10 @@ call $~lib/array/Array#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 13296 i32.store offset=8 local.get $0 @@ -25442,22 +25308,22 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store offset=164 - local.get $1 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 9312 i32.store local.get $0 @@ -25465,27 +25331,27 @@ local.set $5 local.get $0 i32.load offset=12 - local.set $1 + local.set $3 i32.const 0 local.set $0 i32.const 0 local.set $6 - local.get $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + local.get $3 i32.const 1 i32.sub - local.tee $7 + local.tee $2 i32.const 0 i32.lt_s if @@ -25497,18 +25363,18 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0118 - local.get $7 + block $folding-inner0117 + local.get $2 i32.eqz if local.get $5 i32.load8_s call $~lib/util/number/itoa32 local.set $1 - br $folding-inner0118 + br $folding-inner0117 end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.const 9308 i32.load i32.const 1 @@ -25526,10 +25392,10 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0119 + loop $for-loop|0118 + local.get $2 local.get $6 - local.get $7 - i32.lt_s + i32.gt_s if local.get $1 local.get $0 @@ -25565,7 +25431,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0119 + br $for-loop|0118 end end local.get $3 @@ -25574,21 +25440,21 @@ i32.const 1 i32.shl i32.add + local.get $2 local.get $5 - local.get $7 i32.add i32.load8_s call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.tee $0 + local.tee $3 i32.gt_s if local.get $1 - local.get $0 + local.get $3 call $~lib/string/String#substring local.set $1 - br $folding-inner0118 + br $folding-inner0117 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25606,10 +25472,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $3 local.get $1 i32.store - local.get $0 + local.get $3 i32.const 13376 i32.store offset=8 local.get $1 @@ -25631,22 +25497,22 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store offset=164 - local.get $1 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 9312 i32.store local.get $0 @@ -25654,27 +25520,27 @@ local.set $5 local.get $0 i32.load offset=12 - local.set $1 + local.set $3 i32.const 0 local.set $0 i32.const 0 local.set $6 - local.get $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + local.get $3 i32.const 1 i32.sub - local.tee $7 + local.tee $2 i32.const 0 i32.lt_s if @@ -25686,18 +25552,18 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0121 - local.get $7 + block $folding-inner0120 + local.get $2 i32.eqz if local.get $5 i32.load16_u call $~lib/util/number/utoa32 local.set $1 - br $folding-inner0121 + br $folding-inner0120 end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.const 9308 i32.load i32.const 1 @@ -25715,10 +25581,10 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0122 + loop $for-loop|0121 + local.get $2 local.get $6 - local.get $7 - i32.lt_s + i32.gt_s if local.get $1 local.get $0 @@ -25756,7 +25622,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0122 + br $for-loop|0121 end end local.get $3 @@ -25766,7 +25632,7 @@ i32.shl i32.add local.get $5 - local.get $7 + local.get $2 i32.const 1 i32.shl i32.add @@ -25774,14 +25640,14 @@ call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.tee $0 + local.tee $3 i32.gt_s if local.get $1 - local.get $0 + local.get $3 call $~lib/string/String#substring local.set $1 - br $folding-inner0121 + br $folding-inner0120 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25799,10 +25665,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $3 local.get $1 i32.store - local.get $0 + local.get $3 i32.const 13440 i32.store offset=8 local.get $1 @@ -25824,22 +25690,22 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store offset=164 - local.get $1 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 9312 i32.store local.get $0 @@ -25847,27 +25713,27 @@ local.set $5 local.get $0 i32.load offset=12 - local.set $1 + local.set $3 i32.const 0 local.set $0 i32.const 0 local.set $6 - local.get $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + local.get $3 i32.const 1 i32.sub - local.tee $7 + local.tee $2 i32.const 0 i32.lt_s if @@ -25879,260 +25745,260 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0124 - local.get $7 - i32.eqz - if - block $__inlined_func$~lib/util/number/utoa64 (result i32) - local.get $5 - i64.load - local.set $9 + local.get $2 + i32.eqz + if + local.get $5 + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15340 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 + local.get $9 + i64.eqz + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + i32.const 9616 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $9 + i64.const 4294967295 + i64.le_u + if global.get $~lib/memory/__stack_pointer - i32.const 15340 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $9 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9616 - br $__inlined_func$~lib/util/number/utoa64 + i32.wrap_i64 + local.tee $0 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end end + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer local.get $9 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer + i64.const 1000000000000000 + i64.lt_u + if (result i32) local.get $9 - i32.wrap_i64 - local.tee $3 - local.tee $1 - i32.const 100000 - i32.lt_u + i64.const 1000000000000 + i64.lt_u if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end + local.get $9 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $9 + i64.const 10000000000 + i64.ge_u + i32.add else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end + local.get $9 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $9 + i64.const 10000000000000 + i64.ge_u + i32.add end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/number/utoa32_dec_lut else - global.get $~lib/memory/__stack_pointer local.get $9 - i64.const 1000000000000000 + i64.const 100000000000000000 i64.lt_u if (result i32) local.get $9 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $9 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $9 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $9 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $9 - i64.const 10000000000000 - i64.ge_u - i32.add - end + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add else local.get $9 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $9 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $9 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $9 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $9 + i64.const 1000000000000000000 + i64.ge_u + i32.add end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $9 - local.get $1 - call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $9 + local.get $3 + call $~lib/util/number/utoa64_dec_lut end - local.set $1 - br $folding-inner0124 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9308 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 20 - i32.add - i32.mul - i32.const 20 + i32.const 4 i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0125 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9308 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 20 + i32.add + i32.mul + i32.const 20 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $for-loop|0123 + local.get $2 + local.get $6 + i32.gt_s + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $5 local.get $6 - local.get $7 - i32.lt_s + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $4 if local.get $1 local.get $0 i32.const 1 i32.shl i32.add - local.get $5 - local.get $6 - i32.const 3 + i32.const 9312 + local.get $4 + i32.const 1 i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered + call $~lib/memory/memory.copy local.get $0 - i32.add - local.set $0 local.get $4 - if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.const 9312 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $6 - i32.const 1 i32.add - local.set $6 - br $for-loop|0125 + local.set $0 end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0123 end - local.get $3 + end + local.get $3 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $3 + i32.gt_s + if local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner0124 - end + local.get $3 + call $~lib/string/String#substring + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -26149,10 +26015,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $3 local.get $1 i32.store - local.get $0 + local.get $3 i32.const 13536 i32.store offset=8 local.get $1 @@ -26174,17 +26040,17 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store offset=164 - local.get $1 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer local.tee $3 i32.const 0 @@ -26194,338 +26060,22 @@ i32.store local.get $0 i32.load offset=4 - local.set $5 local.get $0 i32.load offset=12 - local.set $1 - i32.const 0 + call $~lib/util/string/joinIntegerArray local.set $0 - i32.const 0 - local.set $6 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15340 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9024 - local.set $1 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - block $folding-inner0127 - local.get $7 - i32.eqz - if - local.get $5 - i64.load - i64.extend32_s - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15340 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 - local.get $9 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9616 - local.set $1 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $9 - i64.sub - local.get $9 - local.get $9 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $4 - select - local.tee $9 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.wrap_i64 - local.tee $3 - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $4 - i32.add - local.tee $0 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $9 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $9 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $9 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $9 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $9 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $9 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $9 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $9 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $9 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $9 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $4 - i32.add - local.tee $0 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $9 - local.get $0 - call $~lib/util/number/utoa64_dec_lut - end - local.get $4 - if - local.get $1 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - br $folding-inner0127 - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9308 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0128 - local.get $6 - local.get $7 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.set $0 - local.get $4 - if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.const 9312 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0128 - end - end - local.get $3 - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner0127 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $3 local.get $0 + i32.store + local.get $3 i32.const 13680 i32.store offset=8 - local.get $1 + local.get $0 i32.const 13680 call $~lib/string/String.__eq i32.eqz @@ -26543,16 +26093,16 @@ i32.const 30 i32.const 13792 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=140 - local.get $1 + local.get $3 call $~lib/array/Array<~lib/string/String|null>#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 13840 i32.store offset=8 local.get $0 @@ -26572,18 +26122,18 @@ i32.const 30 i32.const 13952 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=164 - local.get $1 + local.get $3 call $~lib/array/Array<~lib/string/String|null>#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14000 i32.store offset=8 local.get $0 @@ -26599,7 +26149,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 2 i32.const 2 i32.const 25 @@ -26627,7 +26177,7 @@ i32.const 14064 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $1 + local.get $3 local.get $0 i32.store offset=160 global.get $~lib/memory/__stack_pointer @@ -26637,35 +26187,35 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 9312 i32.store local.get $0 i32.load offset=4 - local.set $7 + local.set $2 local.get $0 i32.load offset=12 local.set $0 i32.const 0 - local.set $10 - local.get $1 + local.set $7 + local.get $3 i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> @@ -26681,25 +26231,25 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9024 - local.set $1 + local.set $3 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end local.get $5 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.load - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 if (result i32) - local.get $1 + local.get $3 call $~lib/array/Array#toString else i32.const 9024 end - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -26707,7 +26257,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end i32.const 9024 - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 9024 i32.store offset=4 @@ -26715,15 +26265,15 @@ i32.load i32.const 1 i32.shr_u - local.set $3 - loop $for-loop|074 + local.set $1 + loop $for-loop|027 local.get $5 - local.get $10 + local.get $7 i32.gt_s if global.get $~lib/memory/__stack_pointer + local.get $2 local.get $7 - local.get $10 i32.const 2 i32.shl i32.add @@ -26739,50 +26289,50 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $1 + local.get $3 local.get $4 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store offset=4 end - local.get $3 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 9312 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store offset=4 end - local.get $10 + local.get $7 i32.const 1 i32.add - local.set $10 - br $for-loop|074 + local.set $7 + br $for-loop|027 end end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 local.get $5 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 call $~lib/array/Array#toString - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $3 + local.get $1 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store offset=4 end global.get $~lib/memory/__stack_pointer @@ -26796,12 +26346,12 @@ global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $1 + local.get $3 i32.store local.get $0 i32.const 14096 i32.store offset=8 - local.get $1 + local.get $3 i32.const 14096 call $~lib/string/String.__eq i32.eqz @@ -26814,7 +26364,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 2 i32.const 2 i32.const 39 @@ -26842,7 +26392,7 @@ i32.const 14176 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $1 + local.get $3 local.get $0 i32.store offset=132 global.get $~lib/memory/__stack_pointer @@ -26852,35 +26402,35 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 9312 i32.store local.get $0 i32.load offset=4 - local.set $7 + local.set $2 local.get $0 i32.load offset=12 local.set $0 i32.const 0 - local.set $10 - local.get $1 + local.set $7 + local.get $3 i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> @@ -26896,25 +26446,25 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9024 - local.set $1 + local.set $3 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end local.get $5 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.load - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 if (result i32) - local.get $1 + local.get $3 call $~lib/array/Array#toString else i32.const 9024 end - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -26922,7 +26472,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end i32.const 9024 - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 9024 i32.store offset=4 @@ -26930,15 +26480,15 @@ i32.load i32.const 1 i32.shr_u - local.set $3 - loop $for-loop|076 + local.set $1 + loop $for-loop|028 local.get $5 - local.get $10 + local.get $7 i32.gt_s if global.get $~lib/memory/__stack_pointer + local.get $2 local.get $7 - local.get $10 i32.const 2 i32.shl i32.add @@ -26954,50 +26504,50 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $1 + local.get $3 local.get $4 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store offset=4 end - local.get $3 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 9312 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store offset=4 end - local.get $10 + local.get $7 i32.const 1 i32.add - local.set $10 - br $for-loop|076 + local.set $7 + br $for-loop|028 end end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 local.get $5 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 call $~lib/array/Array#toString - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $3 + local.get $1 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store offset=4 end global.get $~lib/memory/__stack_pointer @@ -27011,12 +26561,12 @@ global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $1 + local.get $3 i32.store local.get $0 i32.const 14096 i32.store offset=8 - local.get $1 + local.get $3 i32.const 14096 call $~lib/string/String.__eq i32.eqz @@ -27035,26 +26585,26 @@ i32.const 41 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=136 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $3 + local.tee $3 + local.get $1 i32.load offset=4 i32.store offset=128 - local.get $1 + local.get $3 i32.const 1 i32.const 2 i32.const 40 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=124 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.load offset=4 i32.store offset=120 - local.get $1 + local.get $3 i32.const 0 i32.const 1 i32.const 2 @@ -27062,12 +26612,12 @@ i32.const 14208 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $3 - i32.const 0 local.get $1 + i32.const 0 + local.get $3 call $~lib/array/Array#__uset local.get $0 - local.get $3 + local.get $1 i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -27076,35 +26626,35 @@ global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 9312 i32.store - local.get $3 + local.get $1 i32.load offset=4 - local.set $7 - local.get $3 + local.set $2 + local.get $1 i32.load offset=12 local.set $0 i32.const 0 - local.set $10 - local.get $1 + local.set $7 + local.get $3 i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> @@ -27120,25 +26670,25 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9024 - local.set $1 + local.set $3 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end local.get $5 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.load - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 if (result i32) - local.get $1 + local.get $3 call $~lib/array/Array<~lib/array/Array>#toString else i32.const 9024 end - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -27146,7 +26696,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end i32.const 9024 - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 9024 i32.store offset=4 @@ -27154,15 +26704,15 @@ i32.load i32.const 1 i32.shr_u - local.set $3 - loop $for-loop|078 + local.set $1 + loop $for-loop|029 local.get $5 - local.get $10 + local.get $7 i32.gt_s if global.get $~lib/memory/__stack_pointer + local.get $2 local.get $7 - local.get $10 i32.const 2 i32.shl i32.add @@ -27178,50 +26728,50 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $1 + local.get $3 local.get $4 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store offset=4 end - local.get $3 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 9312 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store offset=4 end - local.get $10 + local.get $7 i32.const 1 i32.add - local.set $10 - br $for-loop|078 + local.set $7 + br $for-loop|029 end end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 local.get $5 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 call $~lib/array/Array<~lib/array/Array>#toString - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $3 + local.get $1 call $~lib/string/String.__concat - local.tee $1 + local.tee $3 i32.store offset=4 end global.get $~lib/memory/__stack_pointer @@ -27235,12 +26785,12 @@ global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $1 + local.get $3 i32.store local.get $0 i32.const 12800 i32.store offset=8 - local.get $1 + local.get $3 i32.const 12800 call $~lib/string/String.__eq i32.eqz @@ -27253,7 +26803,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 4 i32.const 2 i32.const 25 @@ -27297,15 +26847,15 @@ i32.const 14336 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $1 + local.get $3 local.get $0 i32.store offset=132 global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/array/Array<~lib/array/Array>#flat - local.tee $1 + local.tee $3 i32.store offset=128 - local.get $1 + local.get $3 i32.load offset=12 i32.const 10 i32.ne @@ -27319,12 +26869,12 @@ end i32.const 0 local.set $0 - loop $for-loop|1132 + loop $for-loop|1128 local.get $0 i32.const 10 i32.lt_s if - local.get $1 + local.get $3 local.get $0 call $~lib/array/Array#__get local.get $0 @@ -27341,11 +26891,11 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1132 + br $for-loop|1128 end end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 4 i32.const 2 i32.const 42 @@ -27389,24 +26939,24 @@ i32.const 14688 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $1 + local.get $3 local.get $4 i32.store offset=140 i32.const 0 local.set $0 i32.const 0 - local.set $10 + local.set $7 i32.const 0 local.set $2 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15340 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner3 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -27416,7 +26966,7 @@ local.get $4 i32.load offset=12 local.set $4 - loop $for-loop|0133 + loop $for-loop|0129 local.get $0 local.get $4 i32.lt_s @@ -27427,57 +26977,57 @@ i32.shl i32.add i32.load - local.tee $1 + local.tee $3 if (result i32) - local.get $1 + local.get $3 i32.load offset=12 else i32.const 0 end - local.get $10 + local.get $7 i32.add - local.set $10 + local.set $7 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0133 + br $for-loop|0129 end end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.const 2 i32.shl - local.tee $1 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 30 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store offset=4 - local.get $8 - local.get $10 + local.get $6 + local.get $7 i32.store offset=12 - local.get $8 - local.get $1 + local.get $6 + local.get $3 i32.store offset=8 + local.get $6 local.get $8 - local.get $7 i32.store offset=4 + local.get $6 local.get $8 - local.get $7 i32.store + local.get $6 local.get $8 - local.get $7 i32.const 0 call $~lib/rt/itcms/__link i32.const 0 local.set $0 - loop $for-loop|1134 + loop $for-loop|1130 local.get $0 local.get $4 i32.lt_s @@ -27488,19 +27038,19 @@ i32.shl i32.add i32.load - local.tee $1 + local.tee $3 if local.get $2 - local.get $7 + local.get $8 i32.add - local.get $1 + local.get $3 i32.load offset=4 - local.get $1 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $3 call $~lib/memory/memory.copy - local.get $1 local.get $2 + local.get $3 i32.add local.set $2 end @@ -27508,18 +27058,18 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1134 + br $for-loop|1130 end end i32.const 0 local.set $0 loop $for-loop|2 local.get $0 - local.get $10 + local.get $7 i32.lt_s if - local.get $7 - local.get $7 + local.get $8 + local.get $8 local.get $0 i32.const 2 i32.shl @@ -27538,8 +27088,8 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $8 + local.get $1 + local.get $6 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -27549,7 +27099,7 @@ call $~lib/rt/__newArray local.tee $4 i32.store offset=148 - local.get $8 + local.get $6 i32.load offset=12 i32.const 8 i32.ne @@ -27563,28 +27113,28 @@ end i32.const 0 local.set $0 - loop $for-loop|2135 + loop $for-loop|2131 local.get $0 local.get $4 i32.load offset=12 i32.lt_s if - local.get $8 + local.get $6 local.get $0 call $~lib/array/Array#__get - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store local.get $4 local.get $0 call $~lib/array/Array#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $3 + i32.store offset=8 local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -27599,11 +27149,11 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2135 + br $for-loop|2131 end end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 2 i32.const 2 i32.const 25 @@ -27631,16 +27181,16 @@ i32.const 14816 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $1 + local.get $3 local.get $0 i32.store offset=156 local.get $0 call $~lib/array/Array<~lib/array/Array>#flat - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 + local.get $3 i32.load offset=12 if i32.const 0 @@ -27662,12 +27212,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|0114 + loop $while-continue|0152 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0114 + br $while-continue|0152 end end end @@ -28056,14 +27606,14 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load offset=12 - local.tee $3 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select + local.tee $3 + local.get $0 + i32.load offset=12 local.tee $4 i32.add local.tee $2 @@ -28090,7 +27640,7 @@ local.tee $5 local.get $0 i32.load offset=4 - local.get $3 + local.get $4 i32.const 2 i32.shl local.tee $0 @@ -28100,7 +27650,7 @@ i32.add local.get $1 i32.load offset=4 - local.get $4 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -29590,6 +29140,334 @@ call $~lib/builtins/abort unreachable ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15340 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9024 + return + end + local.get $7 + i32.eqz + if + local.get $0 + i64.load + i64.extend32_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15340 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa64 + local.get $3 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9616 + local.set $1 + br $__inlined_func$~lib/util/number/itoa64 + end + i64.const 0 + local.get $3 + i64.sub + local.get $3 + local.get $3 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $4 + select + local.tee $3 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.wrap_i64 + local.tee $5 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $4 + i32.add + local.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $5 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $3 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $3 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $3 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.get $4 + i32.add + local.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $0 + call $~lib/util/number/utoa64_dec_lut + end + local.get $4 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 9308 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + loop $for-loop|0 + local.get $5 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9312 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $1 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + local.get $6 + local.get $0 + call $~lib/string/String#substring + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 31744 + i32.const 31792 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -30569,8 +30447,6 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - local.set $3 block $1of1 block $0of1 block $outOfRange @@ -30586,7 +30462,7 @@ local.set $2 end i32.const -1 - local.set $1 + local.set $3 block $__inlined_func$~lib/array/Array#lastIndexOf local.get $0 i32.load offset=12 @@ -30617,17 +30493,17 @@ i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $0 local.get $2 - local.tee $1 + local.tee $3 i32.const 2 i32.shl i32.add i32.load i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $1 + local.get $3 i32.const 1 i32.sub local.set $2 @@ -30635,13 +30511,13 @@ end end i32.const -1 - local.set $1 + local.set $3 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 ) (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -30702,14 +30578,14 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load offset=12 - local.tee $3 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select + local.tee $3 + local.get $0 + i32.load offset=12 local.tee $4 i32.add local.tee $2 @@ -30736,7 +30612,7 @@ local.tee $5 local.get $0 i32.load offset=4 - local.get $3 + local.get $4 i32.const 2 i32.shl local.tee $0 @@ -30746,7 +30622,7 @@ i32.add local.get $1 i32.load offset=4 - local.get $4 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -32408,8 +32284,6 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - local.set $3 block $1of1 block $0of1 block $outOfRange @@ -32425,7 +32299,7 @@ local.set $2 end i32.const -1 - local.set $1 + local.set $3 block $__inlined_func$~lib/array/Array#lastIndexOf local.get $0 i32.load offset=12 @@ -32457,16 +32331,16 @@ i32.ge_s if local.get $2 - local.tee $1 + local.tee $3 local.get $0 i32.add i32.load8_u - local.get $3 + local.get $1 i32.const 255 i32.and i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $1 + local.get $3 i32.const 1 i32.sub local.set $2 @@ -32474,13 +32348,13 @@ end end i32.const -1 - local.set $1 + local.set $3 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 ) (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -34489,15 +34363,15 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $0 + i32.load offset=12 + local.tee $3 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $4 i32.add local.tee $2 i32.const 268435455 @@ -34521,23 +34395,23 @@ local.get $2 i32.load offset=4 local.set $5 - local.get $4 + local.get $3 i32.const 2 i32.shl - local.set $4 + local.set $3 local.get $0 i32.load offset=4 local.set $0 loop $for-loop|0 local.get $3 local.get $4 - i32.lt_u + i32.gt_u if - local.get $3 + local.get $4 local.get $5 i32.add local.get $0 - local.get $3 + local.get $4 i32.add i32.load local.tee $7 @@ -34546,48 +34420,48 @@ local.get $7 i32.const 1 call $~lib/rt/itcms/__link - local.get $3 + local.get $4 i32.const 4 i32.add - local.set $3 + local.set $4 br $for-loop|0 end end - local.get $4 + local.get $3 local.get $5 i32.add - local.set $3 + local.set $0 local.get $1 i32.load offset=4 - local.set $1 + local.set $4 local.get $6 i32.const 2 i32.shl local.set $5 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 local.get $5 i32.lt_u if local.get $0 - local.get $3 + local.get $1 i32.add - local.get $0 local.get $1 + local.get $4 i32.add i32.load - local.tee $4 + local.tee $3 i32.store local.get $2 - local.get $4 + local.get $3 i32.const 1 call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 0826be898f..e58dc189da 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -349,8 +349,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -358,11 +356,12 @@ 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 $2 local.get $3 i32.const 4 @@ -370,6 +369,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -381,17 +381,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -597,7 +597,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -605,6 +604,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -620,7 +620,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -628,6 +627,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -682,11 +682,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1504 @@ -710,11 +710,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1504 @@ -874,17 +874,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -944,15 +944,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1080,12 +1080,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1125,13 +1123,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1171,10 +1169,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1183,7 +1181,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1192,6 +1189,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1205,12 +1203,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1223,7 +1221,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1232,6 +1229,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1438,12 +1436,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1459,14 +1457,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1480,14 +1478,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1498,14 +1497,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1513,19 +1511,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1533,17 +1533,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1553,18 +1552,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1572,18 +1569,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1594,8 +1591,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1608,13 +1605,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1627,54 +1624,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1684,37 +1681,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1722,7 +1719,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -1893,29 +1890,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -1937,25 +1932,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2028,25 +2023,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2115,25 +2110,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2173,143 +2168,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2336,63 +2317,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2419,23 +2394,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2743,7 +2716,7 @@ i32.const 8 i32.sub i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/array/Array $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $invalid + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/array/Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $invalid end return end @@ -2780,23 +2753,24 @@ (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1844 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 memory.size @@ -2831,35 +2805,35 @@ i32.store i32.const 1456 global.set $~lib/rt/itcms/fromSpace - local.get $0 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1844 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 8 call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2874,13 +2848,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 0 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -2906,13 +2880,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -2927,13 +2901,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const -1 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -2948,13 +2922,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 i32.const 3 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -2969,13 +2943,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -2990,13 +2964,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const -3 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -3011,13 +2985,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const -4 i32.const 42 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -3032,7 +3006,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 42 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice @@ -3061,36 +3035,36 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1844 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 local.get $1 - local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3099,37 +3073,37 @@ global.get $~lib/memory/__stack_pointer i32.const 1844 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.const 1632 i32.const 8 call $~lib/memory/memory.copy - local.get $1 local.get $0 + local.get $3 i32.store i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 - local.get $0 + local.tee $2 + local.get $3 i32.store - local.get $1 - local.get $0 + local.get $2 + local.get $3 call $~lib/rt/itcms/__link - local.get $1 - local.get $0 + local.get $2 + local.get $3 i32.store offset=4 - local.get $1 + local.get $2 i32.const 8 i32.store offset=8 - local.get $1 + local.get $2 i32.const 2 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -3138,7 +3112,7 @@ global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $1 + local.get $2 i32.store offset=12 local.get $0 i32.const 4 @@ -3147,33 +3121,33 @@ global.get $~lib/memory/__stack_pointer i32.const 1844 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=12 + local.tee $3 local.get $0 - local.get $2 + i32.store offset=12 + local.get $3 + local.get $1 i32.load local.tee $1 i32.store offset=16 @@ -3182,14 +3156,14 @@ i32.sub i32.load offset=16 local.set $2 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1844 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index cdff3831b2..351fde0324 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -355,8 +355,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -364,11 +362,12 @@ 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 $2 local.get $3 i32.const 4 @@ -376,6 +375,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -387,17 +387,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -603,7 +603,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -611,6 +610,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -626,7 +626,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -634,6 +633,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -688,11 +688,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1504 @@ -716,11 +716,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1504 @@ -880,17 +880,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -950,15 +950,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1086,12 +1086,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1131,13 +1129,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1177,10 +1175,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1189,7 +1187,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1198,6 +1195,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1211,12 +1209,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1229,7 +1227,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1238,6 +1235,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1444,12 +1442,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1465,14 +1463,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1486,14 +1484,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1504,14 +1503,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1519,19 +1517,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1539,17 +1539,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1559,18 +1558,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1578,18 +1575,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1600,8 +1597,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1614,13 +1611,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1633,54 +1630,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1690,37 +1687,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1728,7 +1725,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -1736,67 +1733,66 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 - i32.store + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 i32.const 20 i32.sub - local.tee $1 i32.load offset=4 i32.const 3 i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq + select if local.get $1 call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end end end end ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1568 @@ -1909,10 +1905,10 @@ end ) (func $~lib/dataview/DataView#getInt8 (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -2058,10 +2054,10 @@ end ) (func $~lib/dataview/DataView#getUint8 (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -2519,26 +2515,16 @@ (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid - block $~lib/typedarray/Uint8Array - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/typedarray/Uint8Array $folding-inner0 $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end unreachable @@ -2563,11 +2549,11 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1788 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -2614,7 +2600,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1788 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -2633,7 +2619,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1788 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -2649,7 +2635,10 @@ end local.get $1 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link local.get $1 i32.const 0 i32.store offset=4 @@ -2667,7 +2656,10 @@ call $~lib/memory/memory.fill local.get $1 local.get $2 - call $~lib/arraybuffer/ArrayBufferView#set:buffer + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link local.get $1 local.get $2 i32.store offset=4 @@ -2721,13 +2713,13 @@ i32.const 95 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $3 local.get $1 i32.load - local.tee $2 + local.tee $0 i32.store offset=4 + local.get $3 local.get $0 - local.get $2 local.get $1 i32.load offset=4 local.get $1 @@ -4239,24 +4231,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 local.get $1 i32.load - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $2 local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 call $~lib/dataview/DataView#constructor - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load i32.sub if @@ -4267,7 +4259,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 8 i32.ne @@ -4356,7 +4348,10 @@ i32.store local.get $3 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer + i32.store + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link local.get $3 i32.const 0 i32.store offset=4 @@ -4385,7 +4380,10 @@ end local.get $3 local.get $0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer + i32.store + local.get $3 + local.get $0 + call $~lib/rt/itcms/__link local.get $3 local.get $0 local.get $1 diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index 1dd25fdd11..85034442e2 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -233,20 +233,7 @@ (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) - local.get $6 - i64.extend_i32_s - local.get $5 - i32.const 1000 - i32.mul - i64.extend_i32_s - local.get $4 - i32.const 60000 - i32.mul - i64.extend_i32_s - local.get $3 - i32.const 3600000 - i32.mul - i64.extend_i32_s + (local $7 i32) local.get $0 local.get $1 i32.const 2 @@ -262,9 +249,21 @@ select i32.const 400 i32.div_s - local.tee $3 - i32.const 146097 + local.set $7 + local.get $6 + i64.extend_i32_s + local.get $5 + i32.const 1000 + i32.mul + i64.extend_i32_s + local.get $4 + i32.const 60000 + i32.mul + i64.extend_i32_s + local.get $3 + i32.const 3600000 i32.mul + i64.extend_i32_s local.get $2 local.get $1 i32.const -3 @@ -282,7 +281,7 @@ i32.div_u i32.add local.get $0 - local.get $3 + local.get $7 i32.const 400 i32.mul i32.sub @@ -298,6 +297,9 @@ i32.div_u i32.sub i32.add + local.get $7 + i32.const 146097 + i32.mul i32.add i32.const 719469 i32.sub @@ -381,20 +383,20 @@ i32.const 1 i32.add global.set $~lib/date/_day - local.get $0 i32.const 3 i32.const -9 local.get $0 i32.const 10 i32.lt_s select + local.get $0 i32.add local.tee $0 global.set $~lib/date/_month - local.get $1 local.get $2 i32.const 400 i32.mul + local.get $1 i32.add local.get $0 i32.const 2 @@ -714,8 +716,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -723,11 +723,12 @@ 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 $2 local.get $3 i32.const 4 @@ -735,6 +736,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -746,17 +748,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -962,7 +964,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -970,6 +971,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -985,7 +987,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -993,6 +994,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -1047,11 +1049,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1536 @@ -1075,11 +1077,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1536 @@ -1239,17 +1241,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1309,15 +1311,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1445,12 +1447,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1490,13 +1490,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1536,10 +1536,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1548,7 +1548,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1557,6 +1556,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1570,12 +1570,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1588,7 +1588,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1597,6 +1596,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1803,12 +1803,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1824,14 +1824,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1845,14 +1845,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1863,14 +1864,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1878,19 +1878,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1898,17 +1900,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1918,18 +1919,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1937,18 +1936,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1959,8 +1958,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1973,13 +1972,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1992,54 +1991,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -2049,37 +2048,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -2087,7 +2086,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -2141,17 +2140,17 @@ local.get $0 i64.load offset=16 local.get $1 + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $2 - i64.const 1000 - i64.const 0 - local.get $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.sub @@ -2165,17 +2164,17 @@ local.get $0 i64.load offset=16 local.get $1 + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $2 - i64.const 60000 - i64.const 0 - local.get $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.const 1000 @@ -2193,17 +2192,17 @@ local.get $0 i64.load offset=16 local.get $1 + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $2 - i64.const 3600000 - i64.const 0 - local.get $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.const 60000 @@ -2221,17 +2220,17 @@ local.get $0 i64.load offset=16 local.get $1 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $2 - i64.const 86400000 - i64.const 0 - local.get $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.const 3600000 @@ -2245,8 +2244,9 @@ ) (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) + (local $5 i64) local.get $1 local.get $0 i32.load offset=8 @@ -2255,44 +2255,42 @@ return end local.get $0 - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.tee $3 - i64.const 86400000 - i64.const 0 - local.get $3 - i64.const 0 - i64.lt_s - select - i64.add - local.get $0 i32.load local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 2 i32.le_s i32.sub - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 399 i32.sub - local.get $0 + local.get $2 i32.const 0 i32.ge_s select i32.const 400 i32.div_s - local.tee $4 - i32.const 146097 - i32.mul + local.set $4 + local.get $0 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $5 + i64.const 86400000 + i64.const 0 + local.get $5 + i64.const 0 + i64.lt_s + select + i64.add local.get $1 - local.get $2 + local.get $3 i32.const -3 i32.const 9 - local.get $2 + local.get $3 i32.const 2 i32.gt_s select @@ -2304,7 +2302,7 @@ i32.const 5 i32.div_u i32.add - local.get $0 + local.get $2 local.get $4 i32.const 400 i32.mul @@ -2321,6 +2319,9 @@ i32.div_u i32.sub i32.add + local.get $4 + i32.const 146097 + i32.mul i32.add i32.const 719469 i32.sub @@ -2332,8 +2333,8 @@ ) (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i64) - (local $4 i32) + (local $3 i32) + (local $4 i64) local.get $1 local.get $0 i32.load offset=4 @@ -2342,19 +2343,6 @@ return end local.get $0 - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.tee $3 - i64.const 86400000 - i64.const 0 - local.get $3 - i64.const 0 - i64.lt_s - select - i64.add - local.get $0 i32.load local.get $1 i32.const 1 @@ -2373,9 +2361,20 @@ select i32.const 400 i32.div_s + local.set $3 + local.get $0 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s local.tee $4 - i32.const 146097 - i32.mul + i64.const 86400000 + i64.const 0 + local.get $4 + i64.const 0 + i64.lt_s + select + i64.add local.get $0 i32.load offset=8 local.get $2 @@ -2394,7 +2393,7 @@ i32.div_u i32.add local.get $1 - local.get $4 + local.get $3 i32.const 400 i32.mul i32.sub @@ -2410,6 +2409,9 @@ i32.div_u i32.sub i32.add + local.get $3 + i32.const 146097 + i32.mul i32.add i32.const 719469 i32.sub @@ -2421,8 +2423,8 @@ ) (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i64) - (local $4 i32) + (local $3 i32) + (local $4 i64) local.get $1 local.get $0 i32.load @@ -2430,19 +2432,6 @@ if return end - local.get $0 - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.tee $3 - i64.const 86400000 - i64.const 0 - local.get $3 - i64.const 0 - i64.lt_s - select - i64.add local.get $1 local.get $0 i32.load offset=4 @@ -2460,9 +2449,20 @@ select i32.const 400 i32.div_s + local.set $3 + local.get $0 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s local.tee $4 - i32.const 146097 - i32.mul + i64.const 86400000 + i64.const 0 + local.get $4 + i64.const 0 + i64.lt_s + select + i64.add local.get $0 i32.load offset=8 local.get $2 @@ -2481,7 +2481,7 @@ i32.div_u i32.add local.get $1 - local.get $4 + local.get $3 i32.const 400 i32.mul i32.sub @@ -2497,6 +2497,9 @@ i32.div_u i32.sub i32.add + local.get $3 + i32.const 146097 + i32.mul i32.add i32.const 719469 i32.sub @@ -2506,6 +2509,222 @@ i64.add call $~lib/date/Date#setTime ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1872 + local.set $1 + br $__inlined_func$~lib/util/number/itoa32 + end + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $3 + select + local.tee $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $3 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load + i32.store + else + local.get $1 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $1 + ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2669,29 +2888,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2713,25 +2930,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2804,25 +3021,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 - i32.shl - i32.or - i32.store offset=4 - local.get $0 + i32.shl local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2891,25 +3108,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2949,143 +3166,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3112,63 +3315,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3195,23 +3392,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3792,21 +3987,19 @@ (local $10 i32) local.get $0 i32.load offset=12 - local.tee $10 + local.tee $7 i32.const 1 i32.add local.tee $8 - local.set $4 - local.get $8 + local.tee $3 local.get $0 - local.tee $2 i32.load offset=8 - local.tee $7 + local.tee $5 i32.const 2 i32.shr_u i32.gt_u if - local.get $4 + local.get $3 i32.const 268435455 i32.gt_u if @@ -3817,37 +4010,36 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load - local.tee $9 - local.set $3 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $7 + block $__inlined_func$~lib/rt/itcms/__renew (result i32) + local.get $5 i32.const 1 i32.shl - local.tee $0 + local.tee $2 i32.const 1073741820 - local.get $0 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $5 - local.get $4 + local.tee $2 + local.get $3 i32.const 8 - local.get $4 + local.get $3 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $0 - local.get $0 - local.get $5 - i32.lt_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u select - local.tee $5 + local.tee $3 + local.tee $2 + local.get $0 + i32.load + local.tee $9 local.tee $6 - local.get $9 i32.const 20 i32.sub local.tee $4 @@ -3859,67 +4051,67 @@ i32.le_u if local.get $4 - local.get $6 + local.get $2 i32.store offset=16 - local.get $3 - local.set $0 + local.get $6 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $6 + local.get $2 local.get $4 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $0 - local.get $3 + local.tee $10 local.get $6 + local.get $2 local.get $4 i32.load offset=16 - local.tee $3 - local.get $3 - local.get $6 - i32.gt_u + local.tee $4 + local.get $2 + local.get $4 + i32.lt_u select call $~lib/memory/memory.copy + local.get $10 end - local.get $0 - local.get $7 + local.tee $2 + local.get $5 i32.add + local.get $3 local.get $5 - local.get $7 i32.sub call $~lib/memory/memory.fill - local.get $0 + local.get $2 local.get $9 i32.ne if - local.get $2 local.get $0 - i32.store local.get $2 + i32.store local.get $0 - i32.store offset=4 local.get $2 + i32.store offset=4 local.get $0 + local.get $2 i32.const 0 call $~lib/rt/itcms/__link end - local.get $2 - local.get $5 + local.get $0 + local.get $3 i32.store offset=8 end - local.get $2 + local.get $0 i32.load offset=4 - local.get $10 + local.get $7 i32.const 2 i32.shl i32.add local.get $1 i32.store - local.get $2 + local.get $0 local.get $1 i32.const 1 call $~lib/rt/itcms/__link - local.get $2 + local.get $0 local.get $8 i32.store offset=12 ) @@ -3942,29 +4134,28 @@ return end local.get $0 - local.tee $1 i32.load16_u - local.set $0 + local.set $1 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $0 + local.get $1 i32.const 128 i32.or i32.const 160 i32.eq - local.get $0 + local.get $1 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $0 + local.get $1 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $0 + local.get $1 i32.const -8192 i32.add i32.const 10 @@ -3973,31 +4164,31 @@ drop block $break|0 block $case6|0 - local.get $0 + local.get $1 i32.const 5760 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8232 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8233 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8239 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8287 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 12288 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 65279 i32.eq br_if $case6|0 @@ -4009,12 +4200,12 @@ i32.const 0 end if - local.get $1 + local.get $0 i32.const 2 i32.add - local.tee $1 + local.tee $0 i32.load16_u - local.set $0 + local.set $1 local.get $2 i32.const 1 i32.sub @@ -4023,12 +4214,12 @@ end end i32.const 1 - local.set $5 + local.set $3 i32.const 1 - local.get $0 + local.get $1 i32.const 43 i32.eq - local.get $0 + local.get $1 i32.const 45 i32.eq select @@ -4044,23 +4235,23 @@ end i32.const -1 i32.const 1 - local.get $0 + local.get $1 i32.const 45 i32.eq select - local.set $5 - local.get $1 + local.set $3 + local.get $0 i32.const 2 i32.add - local.tee $1 + local.tee $0 i32.load16_u - local.set $0 + local.set $1 end local.get $2 i32.const 2 i32.gt_s i32.const 0 - local.get $0 + local.get $1 i32.const 48 i32.eq select @@ -4068,102 +4259,101 @@ block $break|1 block $case2|1 block $case1|1 - local.get $1 + local.get $0 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $0 + local.tee $1 i32.const 98 i32.ne if - local.get $0 + local.get $1 i32.const 111 i32.eq br_if $case1|1 - local.get $0 + local.get $1 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 local.get $2 i32.const 2 i32.sub local.set $2 i32.const 2 - local.set $3 + local.set $4 br $break|1 end - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 local.get $2 i32.const 2 i32.sub local.set $2 i32.const 8 - local.set $3 + local.set $4 br $break|1 end - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 local.get $2 i32.const 2 i32.sub local.set $2 i32.const 16 - local.set $3 + local.set $4 end end - local.get $3 + local.get $4 i32.const 10 - local.get $3 + local.get $4 select - local.set $3 + local.set $4 loop $while-continue|2 block $while-break|2 local.get $2 - local.tee $0 + local.tee $1 i32.const 1 i32.sub local.set $2 - local.get $0 + local.get $1 if - local.get $3 - local.get $1 + local.get $0 i32.load16_u - local.tee $0 + local.tee $1 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 48 i32.sub else - local.get $0 + local.get $1 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $0 + local.get $1 i32.const 55 i32.sub else - local.get $0 + local.get $1 i32.const 87 i32.sub - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 97 i32.sub i32.const 25 @@ -4171,10 +4361,11 @@ select end end - local.tee $0 - i32.le_u + local.tee $1 + local.get $4 + i32.ge_u if - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -4182,21 +4373,21 @@ end br $while-break|2 end - local.get $0 - local.get $3 + local.get $1 local.get $4 + local.get $5 i32.mul i32.add - local.set $4 - local.get $1 + local.set $5 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 br $while-continue|2 end end end - local.get $4 + local.get $3 local.get $5 i32.mul ) @@ -4235,61 +4426,63 @@ end local.get $0 local.get $0 + local.tee $1 i32.const 20 i32.sub i32.load offset=16 i32.add - local.set $1 + local.set $2 loop $while-continue|0 - local.get $0 local.get $1 + local.get $2 i32.lt_u if - local.get $0 + local.get $1 i32.load - local.tee $2 + local.tee $0 if - local.get $2 + local.get $0 call $~lib/rt/itcms/__visit end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end return end local.get $0 - i32.load offset=4 local.tee $1 + i32.load offset=4 + local.tee $2 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|00 - local.get $1 local.get $2 + local.get $3 i32.lt_u if - local.get $1 + local.get $2 i32.load - local.tee $3 + local.tee $0 if - local.get $3 + local.get $0 call $~lib/rt/itcms/__visit end - local.get $1 + local.get $2 i32.const 4 i32.add - local.set $1 + local.set $2 br $while-continue|00 end end - local.get $0 + local.get $1 i32.load call $~lib/rt/itcms/__visit return @@ -4403,7 +4596,7 @@ local.get $5 i32.add i32.xor - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $1 global.get $~lib/memory/__stack_pointer local.tee $5 @@ -4428,7 +4621,7 @@ else global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $1 global.get $~lib/memory/__stack_pointer local.tee $3 @@ -4455,7 +4648,7 @@ i32.store offset=92 local.get $0 i32.load offset=4 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.tee $3 @@ -4491,7 +4684,7 @@ i32.store offset=76 local.get $0 i32.load offset=8 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.tee $3 @@ -4540,7 +4733,7 @@ i32.wrap_i64 i32.const 3600000 i32.div_s - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.tee $3 @@ -4589,7 +4782,7 @@ i32.wrap_i64 i32.const 60000 i32.div_s - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.tee $3 @@ -4638,7 +4831,7 @@ i32.wrap_i64 i32.const 1000 i32.div_s - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.tee $3 @@ -4685,7 +4878,7 @@ select i64.add i32.wrap_i64 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $2 @@ -4854,7 +5047,7 @@ local.get $4 i32.add i32.xor - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $8 @@ -4912,7 +5105,7 @@ local.get $1 i32.store offset=24 local.get $7 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.tee $3 @@ -5005,7 +5198,7 @@ i32.wrap_i64 i32.const 3600000 i32.div_s - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 @@ -5047,7 +5240,7 @@ i32.wrap_i64 i32.const 60000 i32.div_s - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.tee $4 @@ -5096,7 +5289,7 @@ i32.wrap_i64 i32.const 1000 i32.div_s - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $2 @@ -5273,7 +5466,7 @@ local.get $7 i32.add i32.xor - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $5 global.get $~lib/memory/__stack_pointer local.tee $3 @@ -5312,7 +5505,7 @@ local.tee $3 i32.store offset=80 local.get $9 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $4 global.get $~lib/memory/__stack_pointer local.tee $2 @@ -5387,7 +5580,7 @@ i32.wrap_i64 i32.const 3600000 i32.div_s - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -5436,7 +5629,7 @@ i32.wrap_i64 i32.const 60000 i32.div_s - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -5485,7 +5678,7 @@ i32.wrap_i64 i32.const 1000 i32.div_s - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $1 global.get $~lib/memory/__stack_pointer local.tee $0 @@ -5550,44 +5743,42 @@ i64.store local.get $2 i64.const 0 - i64.store offset=8 - local.get $2 - i64.const 0 - i64.store offset=16 - block $folding-inner2 - block $folding-inner1 - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/rt/__newArray - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.load offset=4 - local.get $0 - i32.store + i64.store offset=8 + local.get $2 + i64.const 0 + i64.store offset=16 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/__newArray + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + br $folding-inner0 + end local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 - local.set $0 - br $folding-inner1 - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $2 - block $folding-inner0 + i32.shr_u + local.set $2 local.get $1 i32.const 20 i32.sub @@ -5613,7 +5804,12 @@ else local.get $2 i32.eqz - br_if $folding-inner0 + if + i32.const 0 + call $~lib/rt/__newArray + local.set $0 + br $folding-inner1 + end global.get $~lib/memory/__stack_pointer local.get $2 i32.const 2147483647 @@ -5665,12 +5861,7 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return + br $folding-inner0 end global.get $~lib/memory/__stack_pointer i32.const 0 @@ -5785,9 +5976,12 @@ local.get $3 return end - i32.const 0 - call $~lib/rt/__newArray - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end global.get $~lib/memory/__stack_pointer i32.const 24 @@ -9373,221 +9567,6 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7564 - i32.lt_s - if - i32.const 23968 - i32.const 24016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1872 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $4 - select - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $4 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $1 - local.set $0 - local.get $2 - local.set $1 - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $2 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $3 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i64.load32_u - local.get $2 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - i32.const 100 - i32.ge_u - if - local.get $3 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - if - local.get $3 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i32.load - i32.store - else - local.get $3 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 48 - i32.add - i32.store16 - end - local.get $4 - if - local.get $3 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) (func $~lib/string/String#padStart (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 5cb0d5e8fc..a2dfa0240d 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -363,8 +363,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -372,11 +370,12 @@ 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 $2 local.get $3 i32.const 4 @@ -384,6 +383,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -395,17 +395,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -611,7 +611,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -619,6 +618,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -634,7 +634,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -642,6 +641,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -696,11 +696,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -724,11 +724,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -888,17 +888,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -958,15 +958,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1094,12 +1094,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1139,13 +1137,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1185,10 +1183,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1197,7 +1195,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1206,6 +1203,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1219,12 +1217,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1237,7 +1235,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1246,6 +1243,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1452,12 +1450,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1473,14 +1471,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1494,14 +1492,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1512,14 +1511,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1527,19 +1525,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1547,17 +1547,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1567,18 +1566,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1586,18 +1583,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1608,8 +1605,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1622,13 +1619,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1641,54 +1638,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1698,37 +1695,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1736,7 +1733,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -2207,29 +2204,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2251,25 +2246,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2342,25 +2337,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2429,25 +2424,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2487,143 +2482,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2650,63 +2631,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2733,23 +2708,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2810,7 +2783,7 @@ local.get $1 local.get $0 i32.load offset=8 - local.tee $9 + local.tee $8 local.get $2 i32.shr_u i32.gt_u @@ -2830,7 +2803,7 @@ end local.get $0 i32.load - local.set $7 + local.set $4 local.get $1 i32.const 8 local.get $1 @@ -2839,33 +2812,34 @@ select local.get $2 i32.shl - local.set $6 - block $__inlined_func$~lib/rt/itcms/__renew + local.set $1 + block $__inlined_func$~lib/rt/itcms/__renew (result i32) local.get $3 - if - local.get $9 + if (result i32) + local.get $8 i32.const 1 i32.shl - local.tee $1 + local.tee $2 i32.const 1073741820 - local.get $1 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $1 - local.get $6 + local.tee $2 local.get $1 - local.get $6 - i32.gt_u + local.get $1 + local.get $2 + i32.lt_u select - local.set $6 + else + local.get $1 end - local.get $6 - local.get $7 - local.tee $1 + local.tee $6 + local.get $4 + local.tee $2 i32.const 20 i32.sub - local.tee $2 + local.tee $1 i32.load i32.const -4 i32.and @@ -2873,107 +2847,109 @@ i32.sub i32.le_u if - local.get $2 + local.get $1 local.get $6 i32.store offset=16 + local.get $2 br $__inlined_func$~lib/rt/itcms/__renew end local.get $6 - local.get $2 + local.get $1 i32.load offset=12 call $~lib/rt/itcms/__new + local.tee $9 local.set $3 local.get $6 - local.get $2 + local.get $1 i32.load offset=16 - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 local.get $6 i32.gt_u select - local.set $8 + local.set $7 block $~lib/util/memory/memmove|inlined.0 local.get $3 - local.tee $2 - local.get $1 + local.get $2 + local.tee $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - local.get $2 + local.get $3 i32.sub - local.get $8 + local.get $7 i32.sub i32.const 0 - local.get $8 + local.get $7 i32.const 1 i32.shl i32.sub i32.le_u if - local.get $2 + local.get $3 local.get $1 - local.get $8 + local.get $7 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end local.get $1 - local.get $2 + local.get $3 i32.gt_u if local.get $1 i32.const 7 i32.and - local.get $2 + local.get $3 i32.const 7 i32.and i32.eq if loop $while-continue|0 - local.get $2 + local.get $3 i32.const 7 i32.and if - local.get $8 + local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 - local.get $2 - local.tee $4 + local.set $7 + local.get $3 + local.tee $5 i32.const 1 i32.add - local.set $2 + local.set $3 local.get $1 - local.tee $5 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $5 + local.get $4 i32.load8_u i32.store8 br $while-continue|0 end end loop $while-continue|1 - local.get $8 + local.get $7 i32.const 8 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i64.load i64.store - local.get $8 + local.get $7 i32.const 8 i32.sub - local.set $8 - local.get $2 + local.set $7 + local.get $3 i32.const 8 i32.add - local.set $2 + local.set $3 local.get $1 i32.const 8 i32.add @@ -2983,26 +2959,26 @@ end end loop $while-continue|2 - local.get $8 + local.get $7 if - local.get $2 - local.tee $4 + local.get $3 + local.tee $5 i32.const 1 i32.add - local.set $2 + local.set $3 local.get $1 - local.tee $5 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $5 + local.get $4 i32.load8_u i32.store8 - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 + local.set $7 br $while-continue|2 end end @@ -3010,29 +2986,29 @@ local.get $1 i32.const 7 i32.and - local.get $2 + local.get $3 i32.const 7 i32.and i32.eq if loop $while-continue|3 - local.get $2 - local.get $8 + local.get $3 + local.get $7 i32.add i32.const 7 i32.and if - local.get $8 + local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.get $8 + local.get $3 + local.get $7 i32.const 1 i32.sub - local.tee $8 + local.tee $7 i32.add local.get $1 - local.get $8 + local.get $7 i32.add i32.load8_u i32.store8 @@ -3040,18 +3016,18 @@ end end loop $while-continue|4 - local.get $8 + local.get $7 i32.const 8 i32.ge_u if - local.get $2 - local.get $8 + local.get $3 + local.get $7 i32.const 8 i32.sub - local.tee $8 + local.tee $7 i32.add local.get $1 - local.get $8 + local.get $7 i32.add i64.load i64.store @@ -3060,16 +3036,16 @@ end end loop $while-continue|5 - local.get $8 + local.get $7 if - local.get $2 - local.get $8 + local.get $3 + local.get $7 i32.const 1 i32.sub - local.tee $8 + local.tee $7 i32.add local.get $1 - local.get $8 + local.get $7 i32.add i32.load8_u i32.store8 @@ -3078,18 +3054,17 @@ end end end - local.get $3 - local.set $1 + local.get $9 end - local.get $1 - local.get $9 + local.tee $1 + local.get $8 i32.add local.get $6 - local.get $9 + local.get $8 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $7 + local.get $2 i32.ne if local.get $0 @@ -3109,10 +3084,10 @@ ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -3137,19 +3112,19 @@ local.get $3 i32.store offset=12 end + local.get $1 local.get $0 i32.load offset=4 - local.get $1 i32.add local.get $2 i32.store8 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -3184,10 +3159,10 @@ i32.store ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1728 @@ -3548,16 +3523,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $3 i64.const 0 i64.store - local.get $16 + local.get $3 i64.const 0 i64.store offset=8 - local.get $16 + local.get $3 i32.const 0 i32.store offset=16 - local.get $16 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3566,10 +3541,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $16 i32.const 0 i32.store - local.get $4 + local.get $16 i32.const 24 i32.const 3 call $~lib/rt/itcms/__new @@ -3578,10 +3553,10 @@ local.get $15 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $16 i32.store local.get $15 - local.get $4 + local.get $16 call $~lib/rt/itcms/__link local.get $15 i32.const 3 @@ -3589,10 +3564,10 @@ local.get $15 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $16 i32.store offset=8 local.get $15 - local.get $4 + local.get $16 call $~lib/rt/itcms/__link local.get $15 i32.const 4 @@ -3607,11 +3582,11 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $16 + local.get $3 local.get $15 i32.store loop $for-loop|1 - local.get $1 + local.get $4 i32.extend8_s i32.const 100 i32.lt_s @@ -3620,7 +3595,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -3630,22 +3605,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -3654,38 +3629,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load8_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 if i32.const 0 i32.const 1568 @@ -3695,10 +3670,10 @@ unreachable end local.get $15 - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.extend8_s - local.tee $4 + local.tee $16 i32.const 10 i32.add call $~lib/map/Map#set @@ -3706,7 +3681,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $4 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761394 @@ -3715,22 +3690,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -3739,38 +3714,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load8_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -3781,9 +3756,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.extend8_s i32.const 10 i32.add @@ -3796,10 +3771,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 + local.set $4 br $for-loop|1 end end @@ -3816,9 +3791,9 @@ unreachable end i32.const 0 - local.set $1 + local.set $4 loop $for-loop|3 - local.get $1 + local.get $4 i32.extend8_s i32.const 100 i32.lt_s @@ -3827,7 +3802,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -3837,22 +3812,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -3861,38 +3836,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load8_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|05 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -3903,9 +3878,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.extend8_s i32.const 10 i32.add @@ -3919,10 +3894,10 @@ unreachable end local.get $15 - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.extend8_s - local.tee $4 + local.tee $16 i32.const 20 i32.add call $~lib/map/Map#set @@ -3930,7 +3905,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $4 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761394 @@ -3939,22 +3914,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -3963,38 +3938,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load8_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -4005,9 +3980,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.extend8_s i32.const 20 i32.add @@ -4020,10 +3995,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 + local.set $4 br $for-loop|3 end end @@ -4039,8 +4014,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 4 @@ -4051,7 +4024,7 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $13 i32.const 0 i32.store local.get $15 @@ -4059,8 +4032,9 @@ local.set $3 local.get $15 i32.load offset=16 - local.set $12 - local.get $4 + local.tee $16 + local.set $11 + local.get $13 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -4069,10 +4043,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $4 i64.const 0 i64.store - local.get $16 + local.get $4 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new @@ -4093,7 +4067,7 @@ local.get $14 i32.const 0 i32.store offset=12 - local.get $12 + local.get $11 i32.const 1073741820 i32.gt_u if @@ -4105,49 +4079,49 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $11 i32.const 8 - local.get $12 + local.get $11 i32.const 8 i32.gt_u select - local.tee $16 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $13 + local.tee $10 i32.store offset=4 - local.get $13 - local.get $16 + local.get $10 + local.get $4 call $~lib/memory/memory.fill local.get $14 - local.get $13 + local.get $10 i32.store local.get $14 - local.get $13 + local.get $10 call $~lib/rt/itcms/__link local.get $14 - local.get $13 + local.get $10 i32.store offset=4 local.get $14 - local.get $16 + local.get $4 i32.store offset=8 local.get $14 - local.get $12 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $13 local.get $14 i32.store loop $for-loop|0 - local.get $5 local.get $12 + local.get $16 i32.lt_s if local.get $3 - local.get $5 + local.get $12 i32.const 12 i32.mul i32.add @@ -4167,10 +4141,10 @@ i32.add local.set $1 end - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 + local.set $12 br $for-loop|0 end end @@ -4192,10 +4166,10 @@ global.get $~lib/memory/__stack_pointer local.get $15 call $~lib/map/Map#values - local.tee $7 + local.tee $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $16 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4204,53 +4178,53 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 i32.const 0 i32.store - local.get $1 + local.get $4 i32.const 24 i32.const 6 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $13 i32.store - local.get $5 + local.get $13 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 i32.const 3 i32.store offset=4 - local.get $5 + local.get $13 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 i32.const 4 i32.store offset=12 - local.get $5 + local.get $13 i32.const 0 i32.store offset=16 - local.get $5 + local.get $13 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 + local.get $16 + local.get $13 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $9 + local.tee $8 i32.store offset=16 loop $for-loop|4 local.get $2 @@ -4277,10 +4251,10 @@ i32.add i32.load8_s local.set $2 - local.get $7 + local.get $6 local.get $3 call $~lib/array/Array#__get - local.set $8 + local.set $7 local.get $15 i32.load local.get $15 @@ -4295,22 +4269,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -4319,38 +4293,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find11 - loop $while-continue|012 - local.get $16 + local.set $0 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $0 if - local.get $16 + local.get $0 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $0 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find11 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find10 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|012 + local.set $0 + br $while-continue|011 end end i32.const 0 - local.set $16 + local.set $0 end - local.get $16 + local.get $0 i32.eqz if i32.const 0 @@ -4364,10 +4338,10 @@ i32.load local.get $15 i32.load offset=4 - local.get $8 + local.get $7 i32.const 20 i32.sub - local.tee $4 + local.tee $16 i32.extend8_s i32.const -1028477379 i32.mul @@ -4377,22 +4351,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -4401,38 +4375,38 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find14 - loop $while-continue|015 - local.get $0 + local.set $12 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $12 if - local.get $0 + local.get $12 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $12 i32.load8_u - local.get $4 + local.get $16 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find14 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find13 + local.get $4 i32.const -2 i32.and - local.set $0 - br $while-continue|015 + local.set $12 + br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $12 end - local.get $0 + local.get $12 i32.eqz if i32.const 0 @@ -4453,8 +4427,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $13 + i32.load local.get $2 - local.tee $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -4464,83 +4439,79 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor - local.tee $1 - local.set $6 - local.get $5 - i32.load - local.get $1 - local.get $5 + local.tee $5 + local.get $13 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/map/Map#find - loop $while-continue|017 - local.get $0 + loop $while-continue|015 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load8_u - local.get $4 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $4 i32.const -2 i32.and - local.set $0 - br $while-continue|017 + local.set $1 + br $while-continue|015 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.store8 offset=1 else - local.get $5 + local.get $13 i32.load offset=16 - local.get $5 + local.get $13 i32.load offset=12 i32.eq if - local.get $5 + local.get $13 i32.load offset=20 - local.get $5 + local.get $13 i32.load offset=12 i32.const 3 i32.mul @@ -4548,10 +4519,10 @@ i32.div_s i32.lt_s if (result i32) - local.get $5 + local.get $13 i32.load offset=4 else - local.get $5 + local.get $13 i32.load offset=4 i32.const 1 i32.shl @@ -4568,66 +4539,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 i64.const 0 i64.store - local.get $1 + local.get $4 local.get $16 i32.const 1 i32.add - local.tee $1 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $2 + local.tee $11 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=4 - local.get $5 + local.get $13 i32.load offset=8 - local.tee $11 - local.get $5 + local.tee $9 + local.get $13 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $12 - local.get $1 + local.set $10 + local.get $4 local.set $0 - loop $while-continue|018 - local.get $11 - local.get $12 + loop $while-continue|016 + local.get $9 + local.get $10 i32.ne if - local.get $11 + local.get $9 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $11 + local.get $9 i32.load8_s - local.tee $13 + local.tee $12 i32.store8 local.get $0 - local.get $11 + local.get $9 i32.load8_s offset=1 i32.store8 offset=1 local.get $0 - local.get $10 + local.get $1 local.get $16 - local.get $13 + local.get $12 i32.extend8_s i32.const -1028477379 i32.mul @@ -4637,22 +4608,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 16 i32.shr_u i32.xor @@ -4660,10 +4631,10 @@ i32.const 2 i32.shl i32.add - local.tee $13 + local.tee $12 i32.load i32.store offset=4 - local.get $13 + local.get $12 local.get $0 i32.store local.get $0 @@ -4671,33 +4642,33 @@ i32.add local.set $0 end - local.get $11 + local.get $9 i32.const 8 i32.add - local.set $11 - br $while-continue|018 + local.set $9 + br $while-continue|016 end end - local.get $5 - local.get $10 + local.get $13 + local.get $1 i32.store - local.get $5 - local.get $10 + local.get $13 + local.get $1 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 local.get $16 i32.store offset=4 - local.get $5 - local.get $1 + local.get $13 + local.get $4 i32.store offset=8 - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 - local.get $2 + local.get $13 + local.get $11 i32.store offset=12 - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -4706,39 +4677,39 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $13 i32.load offset=8 local.tee $16 i32.store - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=16 - local.tee $1 + local.tee $4 i32.const 1 i32.add i32.store offset=16 local.get $16 - local.get $1 + local.get $4 i32.const 3 i32.shl i32.add - local.tee $1 - local.get $4 + local.tee $4 + local.get $2 i32.store8 - local.get $1 local.get $4 + local.get $2 i32.store8 offset=1 - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $1 - local.get $5 + local.get $4 + local.get $13 i32.load - local.get $6 local.get $5 + local.get $13 i32.load offset=4 i32.and i32.const 2 @@ -4748,15 +4719,15 @@ i32.load i32.store offset=4 local.get $2 - local.get $1 + local.get $4 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 local.get $8 + local.get $7 i32.const 20 i32.sub local.tee $2 @@ -4769,7 +4740,7 @@ br $for-loop|4 end end - local.get $5 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -4781,7 +4752,7 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $8 i32.load offset=20 i32.const 100 i32.ne @@ -4815,22 +4786,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -4839,38 +4810,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find18 + loop $while-continue|019 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find18 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|021 + local.set $3 + br $while-continue|019 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 i32.eqz if i32.const 0 @@ -4913,22 +4884,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -4937,38 +4908,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find21 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|024 + local.set $3 + br $while-continue|022 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -5018,22 +4989,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -5042,38 +5013,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find24 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|027 + local.set $3 + br $while-continue|025 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -5086,7 +5057,7 @@ local.get $2 local.get $2 i32.extend8_s - local.tee $1 + local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set @@ -5094,7 +5065,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761394 @@ -5103,22 +5074,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -5127,38 +5098,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find27 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|030 + local.set $3 + br $while-continue|028 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 i32.eqz if i32.const 0 @@ -5185,22 +5156,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -5209,38 +5180,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find32 - loop $while-continue|033 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find32 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find30 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|033 + local.set $3 + br $while-continue|031 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -5694,16 +5665,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $3 i64.const 0 i64.store - local.get $16 + local.get $3 i64.const 0 i64.store offset=8 - local.get $16 + local.get $3 i32.const 0 i32.store offset=16 - local.get $16 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -5712,10 +5683,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $16 i32.const 0 i32.store - local.get $4 + local.get $16 i32.const 24 i32.const 8 call $~lib/rt/itcms/__new @@ -5724,10 +5695,10 @@ local.get $15 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $16 i32.store local.get $15 - local.get $4 + local.get $16 call $~lib/rt/itcms/__link local.get $15 i32.const 3 @@ -5735,10 +5706,10 @@ local.get $15 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $16 i32.store offset=8 local.get $15 - local.get $4 + local.get $16 call $~lib/rt/itcms/__link local.get $15 i32.const 4 @@ -5753,11 +5724,11 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $16 + local.get $3 local.get $15 i32.store loop $for-loop|1 - local.get $1 + local.get $4 i32.const 255 i32.and i32.const 100 @@ -5767,7 +5738,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.const 255 i32.and i32.const -1028477379 @@ -5778,22 +5749,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -5802,38 +5773,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load8_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 if i32.const 0 i32.const 1568 @@ -5843,11 +5814,11 @@ unreachable end local.get $15 - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.const 255 i32.and - local.tee $4 + local.tee $16 i32.const 10 i32.add call $~lib/map/Map#set @@ -5855,7 +5826,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $4 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761394 @@ -5864,22 +5835,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -5888,38 +5859,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load8_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -5930,9 +5901,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.const 255 i32.and i32.const 10 @@ -5946,10 +5917,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 + local.set $4 br $for-loop|1 end end @@ -5966,9 +5937,9 @@ unreachable end i32.const 0 - local.set $1 + local.set $4 loop $for-loop|3 - local.get $1 + local.get $4 i32.const 255 i32.and i32.const 100 @@ -5978,7 +5949,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.const 255 i32.and i32.const -1028477379 @@ -5989,22 +5960,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -6013,38 +5984,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load8_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|05 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -6055,9 +6026,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.const 255 i32.and i32.const 10 @@ -6072,11 +6043,11 @@ unreachable end local.get $15 - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.const 255 i32.and - local.tee $4 + local.tee $16 i32.const 20 i32.add call $~lib/map/Map#set @@ -6084,7 +6055,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $4 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761394 @@ -6093,22 +6064,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -6117,38 +6088,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load8_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -6159,9 +6130,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.const 255 i32.and i32.const 20 @@ -6175,10 +6146,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 + local.set $4 br $for-loop|3 end end @@ -6194,8 +6165,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 4 @@ -6206,7 +6175,7 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $13 i32.const 0 i32.store local.get $15 @@ -6214,8 +6183,9 @@ local.set $3 local.get $15 i32.load offset=16 - local.set $12 - local.get $4 + local.tee $16 + local.set $11 + local.get $13 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -6224,10 +6194,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $4 i64.const 0 i64.store - local.get $16 + local.get $4 i32.const 16 i32.const 9 call $~lib/rt/itcms/__new @@ -6248,7 +6218,7 @@ local.get $14 i32.const 0 i32.store offset=12 - local.get $12 + local.get $11 i32.const 1073741820 i32.gt_u if @@ -6260,49 +6230,49 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $11 i32.const 8 - local.get $12 + local.get $11 i32.const 8 i32.gt_u select - local.tee $16 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $13 + local.tee $10 i32.store offset=4 - local.get $13 - local.get $16 + local.get $10 + local.get $4 call $~lib/memory/memory.fill local.get $14 - local.get $13 + local.get $10 i32.store local.get $14 - local.get $13 + local.get $10 call $~lib/rt/itcms/__link local.get $14 - local.get $13 + local.get $10 i32.store offset=4 local.get $14 - local.get $16 + local.get $4 i32.store offset=8 local.get $14 - local.get $12 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $13 local.get $14 i32.store loop $for-loop|0 - local.get $5 local.get $12 + local.get $16 i32.lt_s if local.get $3 - local.get $5 + local.get $12 i32.const 12 i32.mul i32.add @@ -6322,10 +6292,10 @@ i32.add local.set $1 end - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 + local.set $12 br $for-loop|0 end end @@ -6347,10 +6317,10 @@ global.get $~lib/memory/__stack_pointer local.get $15 call $~lib/map/Map#values - local.tee $7 + local.tee $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $16 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6359,53 +6329,53 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 i32.const 0 i32.store - local.get $1 + local.get $4 i32.const 24 i32.const 10 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $13 i32.store - local.get $5 + local.get $13 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 i32.const 3 i32.store offset=4 - local.get $5 + local.get $13 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 i32.const 4 i32.store offset=12 - local.get $5 + local.get $13 i32.const 0 i32.store offset=16 - local.get $5 + local.get $13 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 + local.get $16 + local.get $13 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $9 + local.tee $8 i32.store offset=16 loop $for-loop|4 local.get $2 @@ -6432,10 +6402,10 @@ i32.add i32.load8_u local.set $2 - local.get $7 + local.get $6 local.get $3 call $~lib/array/Array#__get - local.set $8 + local.set $7 local.get $15 i32.load local.get $15 @@ -6451,22 +6421,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -6475,38 +6445,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find11 - loop $while-continue|012 - local.get $16 + local.set $0 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $0 if - local.get $16 + local.get $0 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $0 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find11 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find10 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|012 + local.set $0 + br $while-continue|011 end end i32.const 0 - local.set $16 + local.set $0 end - local.get $16 + local.get $0 i32.eqz if i32.const 0 @@ -6520,10 +6490,10 @@ i32.load local.get $15 i32.load offset=4 - local.get $8 + local.get $7 i32.const 20 i32.sub - local.tee $4 + local.tee $16 i32.const 255 i32.and i32.const -1028477379 @@ -6534,22 +6504,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -6558,38 +6528,38 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find14 - loop $while-continue|015 - local.get $0 + local.set $12 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $12 if - local.get $0 + local.get $12 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $12 i32.load8_u - local.get $4 + local.get $16 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find14 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find13 + local.get $4 i32.const -2 i32.and - local.set $0 - br $while-continue|015 + local.set $12 + br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $12 end - local.get $0 + local.get $12 i32.eqz if i32.const 0 @@ -6610,8 +6580,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $13 + i32.load local.get $2 - local.tee $4 i32.const 255 i32.and i32.const -1028477379 @@ -6622,83 +6593,79 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor - local.tee $1 - local.set $6 - local.get $5 - i32.load - local.get $1 - local.get $5 + local.tee $5 + local.get $13 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/map/Map#find - loop $while-continue|017 - local.get $0 + loop $while-continue|015 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load8_u - local.get $4 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $4 i32.const -2 i32.and - local.set $0 - br $while-continue|017 + local.set $1 + br $while-continue|015 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.store8 offset=1 else - local.get $5 + local.get $13 i32.load offset=16 - local.get $5 + local.get $13 i32.load offset=12 i32.eq if - local.get $5 + local.get $13 i32.load offset=20 - local.get $5 + local.get $13 i32.load offset=12 i32.const 3 i32.mul @@ -6706,10 +6673,10 @@ i32.div_s i32.lt_s if (result i32) - local.get $5 + local.get $13 i32.load offset=4 else - local.get $5 + local.get $13 i32.load offset=4 i32.const 1 i32.shl @@ -6726,66 +6693,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 i64.const 0 i64.store - local.get $1 + local.get $4 local.get $16 i32.const 1 i32.add - local.tee $1 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $2 + local.tee $11 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=4 - local.get $5 + local.get $13 i32.load offset=8 - local.tee $11 - local.get $5 + local.tee $9 + local.get $13 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $12 - local.get $1 + local.set $10 + local.get $4 local.set $0 - loop $while-continue|018 - local.get $11 - local.get $12 + loop $while-continue|016 + local.get $9 + local.get $10 i32.ne if - local.get $11 + local.get $9 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $11 + local.get $9 i32.load8_u - local.tee $13 + local.tee $12 i32.store8 local.get $0 - local.get $11 + local.get $9 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $10 + local.get $1 local.get $16 - local.get $13 + local.get $12 i32.const 255 i32.and i32.const -1028477379 @@ -6796,22 +6763,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 16 i32.shr_u i32.xor @@ -6819,10 +6786,10 @@ i32.const 2 i32.shl i32.add - local.tee $13 + local.tee $12 i32.load i32.store offset=4 - local.get $13 + local.get $12 local.get $0 i32.store local.get $0 @@ -6830,33 +6797,33 @@ i32.add local.set $0 end - local.get $11 + local.get $9 i32.const 8 i32.add - local.set $11 - br $while-continue|018 + local.set $9 + br $while-continue|016 end end - local.get $5 - local.get $10 + local.get $13 + local.get $1 i32.store - local.get $5 - local.get $10 + local.get $13 + local.get $1 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 local.get $16 i32.store offset=4 - local.get $5 - local.get $1 + local.get $13 + local.get $4 i32.store offset=8 - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 - local.get $2 + local.get $13 + local.get $11 i32.store offset=12 - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -6865,39 +6832,39 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $13 i32.load offset=8 local.tee $16 i32.store - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=16 - local.tee $1 + local.tee $4 i32.const 1 i32.add i32.store offset=16 local.get $16 - local.get $1 + local.get $4 i32.const 3 i32.shl i32.add - local.tee $1 - local.get $4 + local.tee $4 + local.get $2 i32.store8 - local.get $1 local.get $4 + local.get $2 i32.store8 offset=1 - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $1 - local.get $5 + local.get $4 + local.get $13 i32.load - local.get $6 local.get $5 + local.get $13 i32.load offset=4 i32.and i32.const 2 @@ -6907,15 +6874,15 @@ i32.load i32.store offset=4 local.get $2 - local.get $1 + local.get $4 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 local.get $8 + local.get $7 i32.const 20 i32.sub local.tee $2 @@ -6928,7 +6895,7 @@ br $for-loop|4 end end - local.get $5 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -6940,7 +6907,7 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $8 i32.load offset=20 i32.const 100 i32.ne @@ -6976,22 +6943,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -7000,38 +6967,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find18 + loop $while-continue|019 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find18 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|021 + local.set $3 + br $while-continue|019 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 i32.eqz if i32.const 0 @@ -7076,22 +7043,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -7100,38 +7067,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find21 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|024 + local.set $3 + br $while-continue|022 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -7183,22 +7150,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -7207,38 +7174,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find24 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|027 + local.set $3 + br $while-continue|025 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -7252,7 +7219,7 @@ local.get $2 i32.const 255 i32.and - local.tee $1 + local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set @@ -7260,7 +7227,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761394 @@ -7269,22 +7236,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -7293,38 +7260,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find27 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|030 + local.set $3 + br $while-continue|028 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 i32.eqz if i32.const 0 @@ -7352,22 +7319,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -7376,38 +7343,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find32 - loop $while-continue|033 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load8_u local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find32 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find30 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|033 + local.set $3 + br $while-continue|031 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -7707,10 +7674,10 @@ ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -7897,16 +7864,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $3 i64.const 0 i64.store - local.get $16 + local.get $3 i64.const 0 i64.store offset=8 - local.get $16 + local.get $3 i32.const 0 i32.store offset=16 - local.get $16 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -7915,10 +7882,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $16 i32.const 0 i32.store - local.get $4 + local.get $16 i32.const 24 i32.const 11 call $~lib/rt/itcms/__new @@ -7927,10 +7894,10 @@ local.get $15 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $16 i32.store local.get $15 - local.get $4 + local.get $16 call $~lib/rt/itcms/__link local.get $15 i32.const 3 @@ -7938,10 +7905,10 @@ local.get $15 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $16 i32.store offset=8 local.get $15 - local.get $4 + local.get $16 call $~lib/rt/itcms/__link local.get $15 i32.const 4 @@ -7956,11 +7923,11 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $16 + local.get $3 local.get $15 i32.store loop $for-loop|1 - local.get $1 + local.get $4 i32.extend16_s i32.const 100 i32.lt_s @@ -7969,7 +7936,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -7979,22 +7946,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -8003,38 +7970,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load16_u - local.get $1 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 if i32.const 0 i32.const 1568 @@ -8044,10 +8011,10 @@ unreachable end local.get $15 - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.extend16_s - local.tee $4 + local.tee $16 i32.const 10 i32.add call $~lib/map/Map#set @@ -8055,7 +8022,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $4 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761395 @@ -8064,22 +8031,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -8088,38 +8055,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load16_u - local.get $1 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -8130,9 +8097,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.extend16_s i32.const 10 i32.add @@ -8145,10 +8112,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 + local.set $4 br $for-loop|1 end end @@ -8165,9 +8132,9 @@ unreachable end i32.const 0 - local.set $1 + local.set $4 loop $for-loop|3 - local.get $1 + local.get $4 i32.extend16_s i32.const 100 i32.lt_s @@ -8176,7 +8143,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -8186,22 +8153,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -8210,38 +8177,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load16_u - local.get $1 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|05 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -8252,9 +8219,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.extend16_s i32.const 10 i32.add @@ -8268,10 +8235,10 @@ unreachable end local.get $15 - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.extend16_s - local.tee $4 + local.tee $16 i32.const 20 i32.add call $~lib/map/Map#set @@ -8279,7 +8246,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $4 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761395 @@ -8288,22 +8255,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -8312,38 +8279,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load16_u - local.get $1 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -8354,9 +8321,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.extend16_s i32.const 20 i32.add @@ -8369,10 +8336,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 + local.set $4 br $for-loop|3 end end @@ -8388,8 +8355,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 4 @@ -8400,7 +8365,7 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $13 i32.const 0 i32.store local.get $15 @@ -8408,8 +8373,9 @@ local.set $3 local.get $15 i32.load offset=16 - local.set $12 - local.get $4 + local.tee $16 + local.set $11 + local.get $13 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -8418,10 +8384,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $4 i64.const 0 i64.store - local.get $16 + local.get $4 i32.const 16 i32.const 12 call $~lib/rt/itcms/__new @@ -8442,7 +8408,7 @@ local.get $14 i32.const 0 i32.store offset=12 - local.get $12 + local.get $11 i32.const 536870910 i32.gt_u if @@ -8454,51 +8420,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $11 i32.const 8 - local.get $12 + local.get $11 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $16 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $13 + local.tee $10 i32.store offset=4 - local.get $13 - local.get $16 + local.get $10 + local.get $4 call $~lib/memory/memory.fill local.get $14 - local.get $13 + local.get $10 i32.store local.get $14 - local.get $13 + local.get $10 call $~lib/rt/itcms/__link local.get $14 - local.get $13 + local.get $10 i32.store offset=4 local.get $14 - local.get $16 + local.get $4 i32.store offset=8 local.get $14 - local.get $12 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $13 local.get $14 i32.store loop $for-loop|0 - local.get $5 local.get $12 + local.get $16 i32.lt_s if local.get $3 - local.get $5 + local.get $12 i32.const 12 i32.mul i32.add @@ -8518,10 +8484,10 @@ i32.add local.set $1 end - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 + local.set $12 br $for-loop|0 end end @@ -8543,10 +8509,10 @@ global.get $~lib/memory/__stack_pointer local.get $15 call $~lib/map/Map#values - local.tee $7 + local.tee $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $16 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -8555,53 +8521,53 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 i32.const 0 i32.store - local.get $1 + local.get $4 i32.const 24 i32.const 13 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $13 i32.store - local.get $5 + local.get $13 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 i32.const 3 i32.store offset=4 - local.get $5 + local.get $13 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 i32.const 4 i32.store offset=12 - local.get $5 + local.get $13 i32.const 0 i32.store offset=16 - local.get $5 + local.get $13 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 + local.get $16 + local.get $13 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $9 + local.tee $8 i32.store offset=16 loop $for-loop|4 local.get $2 @@ -8630,10 +8596,10 @@ i32.add i32.load16_s local.set $2 - local.get $7 + local.get $6 local.get $3 call $~lib/array/Array#__get - local.set $8 + local.set $7 local.get $15 i32.load local.get $15 @@ -8648,22 +8614,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -8672,38 +8638,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find11 - loop $while-continue|012 - local.get $16 + local.set $0 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $0 if - local.get $16 + local.get $0 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $0 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find11 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find10 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|012 + local.set $0 + br $while-continue|011 end end i32.const 0 - local.set $16 + local.set $0 end - local.get $16 + local.get $0 i32.eqz if i32.const 0 @@ -8717,10 +8683,10 @@ i32.load local.get $15 i32.load offset=4 - local.get $8 + local.get $7 i32.const 20 i32.sub - local.tee $4 + local.tee $16 i32.extend16_s i32.const -1028477379 i32.mul @@ -8730,22 +8696,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -8754,38 +8720,38 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find14 - loop $while-continue|015 - local.get $0 + local.set $12 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $12 if - local.get $0 + local.get $12 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $12 i32.load16_u - local.get $4 + local.get $16 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find14 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find13 + local.get $4 i32.const -2 i32.and - local.set $0 - br $while-continue|015 + local.set $12 + br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $12 end - local.get $0 + local.get $12 i32.eqz if i32.const 0 @@ -8806,8 +8772,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $13 + i32.load local.get $2 - local.tee $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -8817,83 +8784,79 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor - local.tee $1 - local.set $6 - local.get $5 - i32.load - local.get $1 - local.get $5 + local.tee $5 + local.get $13 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/map/Map#find - loop $while-continue|017 - local.get $0 + loop $while-continue|015 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load16_u - local.get $4 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $4 i32.const -2 i32.and - local.set $0 - br $while-continue|017 + local.set $1 + br $while-continue|015 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.store16 offset=2 else - local.get $5 + local.get $13 i32.load offset=16 - local.get $5 + local.get $13 i32.load offset=12 i32.eq if - local.get $5 + local.get $13 i32.load offset=20 - local.get $5 + local.get $13 i32.load offset=12 i32.const 3 i32.mul @@ -8901,10 +8864,10 @@ i32.div_s i32.lt_s if (result i32) - local.get $5 + local.get $13 i32.load offset=4 else - local.get $5 + local.get $13 i32.load offset=4 i32.const 1 i32.shl @@ -8921,66 +8884,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 i64.const 0 i64.store - local.get $1 + local.get $4 local.get $16 i32.const 1 i32.add - local.tee $1 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $2 + local.tee $11 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=4 - local.get $5 + local.get $13 i32.load offset=8 - local.tee $11 - local.get $5 + local.tee $9 + local.get $13 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $12 - local.get $1 + local.set $10 + local.get $4 local.set $0 - loop $while-continue|018 - local.get $11 - local.get $12 + loop $while-continue|016 + local.get $9 + local.get $10 i32.ne if - local.get $11 + local.get $9 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $11 + local.get $9 i32.load16_s - local.tee $13 + local.tee $12 i32.store16 local.get $0 - local.get $11 + local.get $9 i32.load16_s offset=2 i32.store16 offset=2 local.get $0 - local.get $10 + local.get $1 local.get $16 - local.get $13 + local.get $12 i32.extend16_s i32.const -1028477379 i32.mul @@ -8990,22 +8953,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 16 i32.shr_u i32.xor @@ -9013,10 +8976,10 @@ i32.const 2 i32.shl i32.add - local.tee $13 + local.tee $12 i32.load i32.store offset=4 - local.get $13 + local.get $12 local.get $0 i32.store local.get $0 @@ -9024,33 +8987,33 @@ i32.add local.set $0 end - local.get $11 + local.get $9 i32.const 8 i32.add - local.set $11 - br $while-continue|018 + local.set $9 + br $while-continue|016 end end - local.get $5 - local.get $10 + local.get $13 + local.get $1 i32.store - local.get $5 - local.get $10 + local.get $13 + local.get $1 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 local.get $16 i32.store offset=4 - local.get $5 - local.get $1 + local.get $13 + local.get $4 i32.store offset=8 - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 - local.get $2 + local.get $13 + local.get $11 i32.store offset=12 - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -9059,39 +9022,39 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $13 i32.load offset=8 local.tee $16 i32.store - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=16 - local.tee $1 + local.tee $4 i32.const 1 i32.add i32.store offset=16 local.get $16 - local.get $1 + local.get $4 i32.const 3 i32.shl i32.add - local.tee $1 - local.get $4 + local.tee $4 + local.get $2 i32.store16 - local.get $1 local.get $4 + local.get $2 i32.store16 offset=2 - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $1 - local.get $5 + local.get $4 + local.get $13 i32.load - local.get $6 local.get $5 + local.get $13 i32.load offset=4 i32.and i32.const 2 @@ -9101,15 +9064,15 @@ i32.load i32.store offset=4 local.get $2 - local.get $1 + local.get $4 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 local.get $8 + local.get $7 i32.const 20 i32.sub local.tee $2 @@ -9122,7 +9085,7 @@ br $for-loop|4 end end - local.get $5 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -9134,7 +9097,7 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $8 i32.load offset=20 i32.const 100 i32.ne @@ -9168,22 +9131,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -9192,38 +9155,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find18 + loop $while-continue|019 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find18 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|021 + local.set $3 + br $while-continue|019 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 i32.eqz if i32.const 0 @@ -9266,22 +9229,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -9290,38 +9253,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find21 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|024 + local.set $3 + br $while-continue|022 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -9371,22 +9334,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -9395,38 +9358,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find24 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|027 + local.set $3 + br $while-continue|025 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -9439,7 +9402,7 @@ local.get $2 local.get $2 i32.extend16_s - local.tee $1 + local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set @@ -9447,7 +9410,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761395 @@ -9456,22 +9419,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -9480,38 +9443,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find27 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|030 + local.set $3 + br $while-continue|028 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 i32.eqz if i32.const 0 @@ -9538,22 +9501,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 + i32.mul + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -9562,38 +9525,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find32 - loop $while-continue|033 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find32 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find30 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|033 + local.set $3 + br $while-continue|031 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -10047,16 +10010,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $3 i64.const 0 i64.store - local.get $16 + local.get $3 i64.const 0 i64.store offset=8 - local.get $16 + local.get $3 i32.const 0 i32.store offset=16 - local.get $16 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -10065,10 +10028,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $16 i32.const 0 i32.store - local.get $4 + local.get $16 i32.const 24 i32.const 14 call $~lib/rt/itcms/__new @@ -10077,10 +10040,10 @@ local.get $15 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $16 i32.store local.get $15 - local.get $4 + local.get $16 call $~lib/rt/itcms/__link local.get $15 i32.const 3 @@ -10088,10 +10051,10 @@ local.get $15 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $16 i32.store offset=8 local.get $15 - local.get $4 + local.get $16 call $~lib/rt/itcms/__link local.get $15 i32.const 4 @@ -10106,11 +10069,11 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $16 + local.get $3 local.get $15 i32.store loop $for-loop|1 - local.get $1 + local.get $4 i32.const 65535 i32.and i32.const 100 @@ -10120,7 +10083,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.const 65535 i32.and i32.const -1028477379 @@ -10131,22 +10094,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -10155,38 +10118,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load16_u - local.get $1 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 if i32.const 0 i32.const 1568 @@ -10196,11 +10159,11 @@ unreachable end local.get $15 - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.const 65535 i32.and - local.tee $4 + local.tee $16 i32.const 10 i32.add call $~lib/map/Map#set @@ -10208,7 +10171,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $4 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761395 @@ -10217,22 +10180,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -10241,38 +10204,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load16_u - local.get $1 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -10283,9 +10246,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.const 65535 i32.and i32.const 10 @@ -10299,10 +10262,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 + local.set $4 br $for-loop|1 end end @@ -10319,9 +10282,9 @@ unreachable end i32.const 0 - local.set $1 + local.set $4 loop $for-loop|3 - local.get $1 + local.get $4 i32.const 65535 i32.and i32.const 100 @@ -10331,7 +10294,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.const 65535 i32.and i32.const -1028477379 @@ -10342,22 +10305,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -10366,38 +10329,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load16_u - local.get $1 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|05 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -10408,9 +10371,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.const 65535 i32.and i32.const 10 @@ -10425,11 +10388,11 @@ unreachable end local.get $15 - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.const 65535 i32.and - local.tee $4 + local.tee $16 i32.const 20 i32.add call $~lib/map/Map#set @@ -10437,7 +10400,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $4 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761395 @@ -10446,22 +10409,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $4 - local.get $4 + local.tee $16 + local.get $16 i32.const 16 i32.shr_u i32.xor @@ -10470,38 +10433,38 @@ i32.shl i32.add i32.load - local.set $3 + local.set $14 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $3 + local.get $14 if - local.get $3 + local.get $14 i32.load offset=8 - local.tee $4 + local.tee $16 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $14 i32.load16_u - local.get $1 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $4 + local.get $16 i32.const -2 i32.and - local.set $3 + local.set $14 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $14 end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -10512,9 +10475,9 @@ unreachable end local.get $15 - local.get $1 + local.get $4 call $~lib/map/Map#get - local.get $1 + local.get $4 i32.const 65535 i32.and i32.const 20 @@ -10528,10 +10491,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 + local.set $4 br $for-loop|3 end end @@ -10547,8 +10510,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 4 @@ -10559,7 +10520,7 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $13 i32.const 0 i32.store local.get $15 @@ -10567,8 +10528,9 @@ local.set $3 local.get $15 i32.load offset=16 - local.set $12 - local.get $4 + local.tee $16 + local.set $11 + local.get $13 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -10577,10 +10539,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $4 i64.const 0 i64.store - local.get $16 + local.get $4 i32.const 16 i32.const 15 call $~lib/rt/itcms/__new @@ -10601,7 +10563,7 @@ local.get $14 i32.const 0 i32.store offset=12 - local.get $12 + local.get $11 i32.const 536870910 i32.gt_u if @@ -10613,51 +10575,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $11 i32.const 8 - local.get $12 + local.get $11 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $16 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $13 + local.tee $10 i32.store offset=4 - local.get $13 - local.get $16 + local.get $10 + local.get $4 call $~lib/memory/memory.fill local.get $14 - local.get $13 + local.get $10 i32.store local.get $14 - local.get $13 + local.get $10 call $~lib/rt/itcms/__link local.get $14 - local.get $13 + local.get $10 i32.store offset=4 local.get $14 - local.get $16 + local.get $4 i32.store offset=8 local.get $14 - local.get $12 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $13 local.get $14 i32.store loop $for-loop|0 - local.get $5 local.get $12 + local.get $16 i32.lt_s if local.get $3 - local.get $5 + local.get $12 i32.const 12 i32.mul i32.add @@ -10677,10 +10639,10 @@ i32.add local.set $1 end - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 + local.set $12 br $for-loop|0 end end @@ -10702,10 +10664,10 @@ global.get $~lib/memory/__stack_pointer local.get $15 call $~lib/map/Map#values - local.tee $7 + local.tee $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $16 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -10714,53 +10676,53 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 i32.const 0 i32.store - local.get $1 + local.get $4 i32.const 24 i32.const 16 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $13 i32.store - local.get $5 + local.get $13 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 i32.const 3 i32.store offset=4 - local.get $5 + local.get $13 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 i32.const 4 i32.store offset=12 - local.get $5 + local.get $13 i32.const 0 i32.store offset=16 - local.get $5 + local.get $13 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 + local.get $16 + local.get $13 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $9 + local.tee $8 i32.store offset=16 loop $for-loop|4 local.get $2 @@ -10789,10 +10751,10 @@ i32.add i32.load16_u local.set $2 - local.get $7 + local.get $6 local.get $3 call $~lib/array/Array#__get - local.set $8 + local.set $7 local.get $15 i32.load local.get $15 @@ -10808,22 +10770,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -10832,38 +10794,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find11 - loop $while-continue|012 - local.get $16 + local.set $0 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $0 if - local.get $16 + local.get $0 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $0 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find11 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find10 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|012 + local.set $0 + br $while-continue|011 end end i32.const 0 - local.set $16 + local.set $0 end - local.get $16 + local.get $0 i32.eqz if i32.const 0 @@ -10877,10 +10839,10 @@ i32.load local.get $15 i32.load offset=4 - local.get $8 + local.get $7 i32.const 20 i32.sub - local.tee $4 + local.tee $16 i32.const 65535 i32.and i32.const -1028477379 @@ -10891,22 +10853,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -10915,38 +10877,38 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find14 - loop $while-continue|015 - local.get $0 + local.set $12 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $12 if - local.get $0 + local.get $12 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $12 i32.load16_u - local.get $4 + local.get $16 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find14 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find13 + local.get $4 i32.const -2 i32.and - local.set $0 - br $while-continue|015 + local.set $12 + br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $12 end - local.get $0 + local.get $12 i32.eqz if i32.const 0 @@ -10967,8 +10929,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $13 + i32.load local.get $2 - local.tee $4 i32.const 65535 i32.and i32.const -1028477379 @@ -10979,83 +10942,79 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor - local.tee $1 - local.set $6 - local.get $5 - i32.load - local.get $1 - local.get $5 + local.tee $5 + local.get $13 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/map/Map#find - loop $while-continue|017 - local.get $0 + loop $while-continue|015 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load16_u - local.get $4 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $4 i32.const -2 i32.and - local.set $0 - br $while-continue|017 + local.set $1 + br $while-continue|015 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.store16 offset=2 else - local.get $5 + local.get $13 i32.load offset=16 - local.get $5 + local.get $13 i32.load offset=12 i32.eq if - local.get $5 + local.get $13 i32.load offset=20 - local.get $5 + local.get $13 i32.load offset=12 i32.const 3 i32.mul @@ -11063,10 +11022,10 @@ i32.div_s i32.lt_s if (result i32) - local.get $5 + local.get $13 i32.load offset=4 else - local.get $5 + local.get $13 i32.load offset=4 i32.const 1 i32.shl @@ -11083,66 +11042,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 i64.const 0 i64.store - local.get $1 + local.get $4 local.get $16 i32.const 1 i32.add - local.tee $1 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $2 + local.tee $11 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=4 - local.get $5 + local.get $13 i32.load offset=8 - local.tee $11 - local.get $5 + local.tee $9 + local.get $13 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $12 - local.get $1 + local.set $10 + local.get $4 local.set $0 - loop $while-continue|018 - local.get $11 - local.get $12 + loop $while-continue|016 + local.get $9 + local.get $10 i32.ne if - local.get $11 + local.get $9 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $11 + local.get $9 i32.load16_u - local.tee $13 + local.tee $12 i32.store16 local.get $0 - local.get $11 + local.get $9 i32.load16_u offset=2 i32.store16 offset=2 local.get $0 - local.get $10 + local.get $1 local.get $16 - local.get $13 + local.get $12 i32.const 65535 i32.and i32.const -1028477379 @@ -11153,22 +11112,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $13 - local.get $13 + local.tee $12 + local.get $12 i32.const 16 i32.shr_u i32.xor @@ -11176,10 +11135,10 @@ i32.const 2 i32.shl i32.add - local.tee $13 + local.tee $12 i32.load i32.store offset=4 - local.get $13 + local.get $12 local.get $0 i32.store local.get $0 @@ -11187,33 +11146,33 @@ i32.add local.set $0 end - local.get $11 + local.get $9 i32.const 8 i32.add - local.set $11 - br $while-continue|018 + local.set $9 + br $while-continue|016 end end - local.get $5 - local.get $10 + local.get $13 + local.get $1 i32.store - local.get $5 - local.get $10 + local.get $13 + local.get $1 call $~lib/rt/itcms/__link - local.get $5 + local.get $13 local.get $16 i32.store offset=4 - local.get $5 - local.get $1 + local.get $13 + local.get $4 i32.store offset=8 - local.get $5 - local.get $1 + local.get $13 + local.get $4 call $~lib/rt/itcms/__link - local.get $5 - local.get $2 + local.get $13 + local.get $11 i32.store offset=12 - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -11222,39 +11181,39 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $13 i32.load offset=8 local.tee $16 i32.store - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=16 - local.tee $1 + local.tee $4 i32.const 1 i32.add i32.store offset=16 local.get $16 - local.get $1 + local.get $4 i32.const 3 i32.shl i32.add - local.tee $1 - local.get $4 + local.tee $4 + local.get $2 i32.store16 - local.get $1 local.get $4 + local.get $2 i32.store16 offset=2 - local.get $5 - local.get $5 + local.get $13 + local.get $13 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $1 - local.get $5 + local.get $4 + local.get $13 i32.load - local.get $6 local.get $5 + local.get $13 i32.load offset=4 i32.and i32.const 2 @@ -11264,15 +11223,15 @@ i32.load i32.store offset=4 local.get $2 - local.get $1 + local.get $4 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 local.get $8 + local.get $7 i32.const 20 i32.sub local.tee $2 @@ -11285,7 +11244,7 @@ br $for-loop|4 end end - local.get $5 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -11297,7 +11256,7 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $8 i32.load offset=20 i32.const 100 i32.ne @@ -11333,22 +11292,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -11357,38 +11316,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find18 + loop $while-continue|019 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find18 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|021 + local.set $3 + br $while-continue|019 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 i32.eqz if i32.const 0 @@ -11433,22 +11392,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -11457,38 +11416,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find21 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|024 + local.set $3 + br $while-continue|022 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -11540,22 +11499,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -11564,38 +11523,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find24 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|027 + local.set $3 + br $while-continue|025 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -11609,7 +11568,7 @@ local.get $2 i32.const 65535 i32.and - local.tee $1 + local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set @@ -11617,7 +11576,7 @@ i32.load local.get $15 i32.load offset=4 - local.get $1 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761395 @@ -11626,22 +11585,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -11650,38 +11609,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find27 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|030 + local.set $3 + br $while-continue|028 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 i32.eqz if i32.const 0 @@ -11709,22 +11668,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -11733,38 +11692,38 @@ i32.shl i32.add i32.load - local.set $16 - block $__inlined_func$~lib/map/Map#find32 - loop $while-continue|033 - local.get $16 + local.set $3 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $3 if - local.get $16 + local.get $3 i32.load offset=8 - local.tee $1 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 + local.get $3 i32.load16_u local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find32 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find30 + local.get $4 i32.const -2 i32.and - local.set $16 - br $while-continue|033 + local.set $3 + br $while-continue|031 end end i32.const 0 - local.set $16 + local.set $3 end - local.get $16 + local.get $3 if i32.const 0 i32.const 1568 @@ -13634,16 +13593,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i64.const 0 i64.store - local.get $4 + local.get $3 i64.const 0 i64.store offset=8 - local.get $4 + local.get $3 i32.const 0 i32.store offset=16 - local.get $4 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -13652,60 +13611,60 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $4 i32.const 0 i32.store - local.get $16 + local.get $4 i32.const 24 i32.const 17 call $~lib/rt/itcms/__new - local.tee $14 + local.tee $4 i32.store - local.get $14 + local.get $4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $16 + local.tee $1 i32.store - local.get $14 - local.get $16 + local.get $4 + local.get $1 call $~lib/rt/itcms/__link - local.get $14 + local.get $4 i32.const 3 i32.store offset=4 - local.get $14 + local.get $4 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $16 + local.tee $1 i32.store offset=8 - local.get $14 - local.get $16 + local.get $4 + local.get $1 call $~lib/rt/itcms/__link - local.get $14 + local.get $4 i32.const 4 i32.store offset=12 - local.get $14 + local.get $4 i32.const 0 i32.store offset=16 - local.get $14 + local.get $4 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 local.get $4 - local.get $14 i32.store loop $for-loop|0 - local.get $1 + local.get $0 i32.const 100 i32.lt_u if - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $1 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13714,22 +13673,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -13738,36 +13697,36 @@ i32.shl i32.add i32.load - local.set $13 + local.set $3 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $13 + local.get $3 if - local.get $13 + local.get $3 i32.load offset=8 - local.tee $16 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - local.get $13 + local.get $0 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $16 + local.get $2 i32.const -2 i32.and - local.set $13 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $13 + local.set $3 end - local.get $13 + local.get $3 if i32.const 0 i32.const 1568 @@ -13776,17 +13735,17 @@ call $~lib/builtins/abort unreachable end - local.get $14 - local.get $1 - local.get $1 + local.get $4 + local.get $0 + local.get $0 i32.const 10 i32.add call $~lib/map/Map#set - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $1 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13795,22 +13754,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -13819,36 +13778,36 @@ i32.shl i32.add i32.load - local.set $13 + local.set $3 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $13 + local.get $3 if - local.get $13 + local.get $3 i32.load offset=8 - local.tee $16 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - local.get $13 + local.get $0 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $16 + local.get $2 i32.const -2 i32.and - local.set $13 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $13 + local.set $3 end - local.get $13 + local.get $3 i32.eqz if i32.const 0 @@ -13858,10 +13817,10 @@ call $~lib/builtins/abort unreachable end - local.get $14 - local.get $1 + local.get $4 + local.get $0 call $~lib/map/Map#get - local.get $1 + local.get $0 i32.const 10 i32.add i32.ne @@ -13873,14 +13832,14 @@ call $~lib/builtins/abort unreachable end - 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 $14 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -13893,17 +13852,17 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|1 - local.get $1 + local.get $0 i32.const 100 i32.lt_u if - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $1 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13912,22 +13871,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -13936,36 +13895,36 @@ i32.shl i32.add i32.load - local.set $13 + local.set $3 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $13 + local.get $3 if - local.get $13 + local.get $3 i32.load offset=8 - local.tee $16 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - local.get $13 + local.get $0 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $16 + local.get $2 i32.const -2 i32.and - local.set $13 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $13 + local.set $3 end - local.get $13 + local.get $3 i32.eqz if i32.const 0 @@ -13975,10 +13934,10 @@ call $~lib/builtins/abort unreachable end - local.get $14 - local.get $1 + local.get $4 + local.get $0 call $~lib/map/Map#get - local.get $1 + local.get $0 i32.const 10 i32.add i32.ne @@ -13990,17 +13949,17 @@ call $~lib/builtins/abort unreachable end - local.get $14 - local.get $1 - local.get $1 + local.get $4 + local.get $0 + local.get $0 i32.const 20 i32.add call $~lib/map/Map#set - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $1 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14009,22 +13968,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $16 - local.get $16 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -14033,36 +13992,36 @@ i32.shl i32.add i32.load - local.set $13 + local.set $3 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $13 + local.get $3 if - local.get $13 + local.get $3 i32.load offset=8 - local.tee $16 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - local.get $13 + local.get $0 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $16 + local.get $2 i32.const -2 i32.and - local.set $13 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $13 + local.set $3 end - local.get $13 + local.get $3 i32.eqz if i32.const 0 @@ -14072,10 +14031,10 @@ call $~lib/builtins/abort unreachable end - local.get $14 - local.get $1 + local.get $4 + local.get $0 call $~lib/map/Map#get - local.get $1 + local.get $0 i32.const 20 i32.add i32.ne @@ -14087,14 +14046,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end - local.get $14 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -14107,9 +14066,9 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $10 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -14118,16 +14077,17 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $2 i32.const 0 i32.store - local.get $14 + local.get $4 i32.load offset=8 - local.set $13 - local.get $14 - i32.load offset=16 local.set $11 - local.get $16 + local.get $4 + i32.load offset=16 + local.tee $12 + local.set $3 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -14136,31 +14096,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i64.const 0 i64.store - local.get $4 + local.get $1 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $12 + local.tee $6 i32.store - local.get $12 + local.get $6 i32.const 0 i32.store - local.get $12 + local.get $6 i32.const 0 call $~lib/rt/itcms/__link - local.get $12 + local.get $6 i32.const 0 i32.store offset=4 - local.get $12 + local.get $6 i32.const 0 i32.store offset=8 - local.get $12 + local.get $6 i32.const 0 i32.store offset=12 - local.get $11 + local.get $3 i32.const 268435455 i32.gt_u if @@ -14172,99 +14132,99 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $3 i32.const 8 - local.get $11 + local.get $3 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $4 + local.tee $7 i32.const 0 call $~lib/rt/itcms/__new - local.tee $15 + local.tee $1 i32.store offset=4 - local.get $15 - local.get $4 + local.get $1 + local.get $7 call $~lib/memory/memory.fill - local.get $12 - local.get $15 + local.get $6 + local.get $1 i32.store - local.get $12 - local.get $15 + local.get $6 + local.get $1 call $~lib/rt/itcms/__link - local.get $12 - local.get $15 + local.get $6 + local.get $1 i32.store offset=4 - local.get $12 - local.get $4 + local.get $6 + local.get $7 i32.store offset=8 - local.get $12 - local.get $11 + local.get $6 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $16 - local.get $12 + local.get $2 + local.get $6 i32.store loop $for-loop|01 - local.get $0 - local.get $11 + local.get $8 + local.get $12 i32.lt_s if - local.get $13 - local.get $0 + local.get $11 + local.get $8 i32.const 12 i32.mul i32.add - local.tee $16 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $12 - local.get $1 - local.get $16 + local.get $6 + local.get $0 + local.get $3 i32.load call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end - local.get $0 + local.get $8 i32.const 1 i32.add - local.set $0 + local.set $8 br $for-loop|01 end end - local.get $12 - local.get $1 + local.get $6 + local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $12 - local.get $1 + local.get $6 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $12 + local.get $10 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $4 call $~lib/map/Map#values - local.tee $8 + local.tee $13 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $16 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -14273,63 +14233,62 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 24 i32.const 19 call $~lib/rt/itcms/__new - local.tee $15 + local.tee $3 i32.store - local.get $15 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $15 + local.get $3 local.get $1 call $~lib/rt/itcms/__link - local.get $15 + local.get $3 i32.const 3 i32.store offset=4 - local.get $15 + local.get $3 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $15 + local.get $3 local.get $1 call $~lib/rt/itcms/__link - local.get $15 + local.get $3 i32.const 4 i32.store offset=12 - local.get $15 + local.get $3 i32.const 0 i32.store offset=16 - local.get $15 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $16 - local.get $15 + local.get $0 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $10 + local.tee $11 i32.store offset=16 loop $for-loop|2 - local.get $2 - local.get $12 + local.get $5 + local.get $6 i32.load offset=12 i32.lt_s if - local.get $2 - local.tee $3 - local.get $12 + local.get $5 + local.get $6 i32.load offset=12 i32.ge_u if @@ -14340,23 +14299,23 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $6 i32.load offset=4 - local.get $3 + local.get $5 i32.const 2 i32.shl i32.add i32.load - local.set $2 - local.get $8 - local.get $3 + local.set $0 + local.get $13 + local.get $5 call $~lib/array/Array#__get - local.set $9 - local.get $14 + local.set $12 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $2 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14389,36 +14348,36 @@ i32.shl i32.add i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find11 - loop $while-continue|012 - local.get $4 + local.set $1 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $1 if - local.get $4 + local.get $1 i32.load offset=8 - local.tee $1 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find11 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find10 + local.get $2 i32.const -2 i32.and - local.set $4 - br $while-continue|012 + local.set $1 + br $while-continue|011 end end i32.const 0 - local.set $4 + local.set $1 end - local.get $4 + local.get $1 i32.eqz if i32.const 0 @@ -14428,14 +14387,14 @@ call $~lib/builtins/abort unreachable end - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $9 + local.get $12 i32.const 20 i32.sub - local.tee $16 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14468,36 +14427,36 @@ i32.shl i32.add i32.load - local.set $13 - block $__inlined_func$~lib/map/Map#find14 - loop $while-continue|015 - local.get $13 + local.set $1 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $1 if - local.get $13 + local.get $1 i32.load offset=8 - local.tee $1 + local.tee $7 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $16 - local.get $13 + local.get $2 + local.get $1 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find14 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find13 + local.get $7 i32.const -2 i32.and - local.set $13 - br $while-continue|015 + local.set $1 + br $while-continue|014 end end i32.const 0 - local.set $13 + local.set $1 end - local.get $13 + local.get $1 i32.eqz if i32.const 0 @@ -14518,10 +14477,10 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $15 + local.get $3 i32.load - local.get $2 - local.tee $4 + local.get $0 + local.tee $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14530,77 +14489,77 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor - local.tee $7 - local.get $15 + local.tee $14 + local.get $3 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find17 - loop $while-continue|018 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $13 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 local.get $1 + local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find17 - local.get $13 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $2 i32.const -2 i32.and - local.set $1 - br $while-continue|018 + local.set $0 + br $while-continue|016 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if + local.get $0 local.get $1 - local.get $4 i32.store offset=4 else - local.get $15 + local.get $3 i32.load offset=16 - local.get $15 + local.get $3 i32.load offset=12 i32.eq if - local.get $15 + local.get $3 i32.load offset=20 - local.get $15 + local.get $3 i32.load offset=12 i32.const 3 i32.mul @@ -14608,17 +14567,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $15 + local.get $3 i32.load offset=4 else - local.get $15 + local.get $3 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $13 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14628,66 +14587,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 - local.get $13 + local.get $0 + local.get $8 i32.const 1 i32.add - local.tee $1 + local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $16 + local.tee $10 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $15 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $15 + local.get $3 i32.load offset=8 - local.tee $2 - local.get $15 + local.tee $7 + local.get $3 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $5 - local.get $1 + local.set $16 + local.get $2 local.set $0 - loop $while-continue|019 - local.get $2 - local.get $5 + loop $while-continue|017 + local.get $7 + local.get $16 i32.ne if - local.get $2 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $2 + local.get $7 i32.load - local.tee $11 + local.tee $9 i32.store local.get $0 - local.get $2 + local.get $7 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $16 - local.get $13 - local.get $11 + local.get $10 + local.get $8 + local.get $9 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14696,22 +14655,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 i32.const 16 i32.shr_u i32.xor @@ -14719,10 +14678,10 @@ i32.const 2 i32.shl i32.add - local.tee $11 + local.tee $9 i32.load i32.store offset=8 - local.get $11 + local.get $9 local.get $0 i32.store local.get $0 @@ -14730,33 +14689,33 @@ i32.add local.set $0 end - local.get $2 + local.get $7 i32.const 12 i32.add - local.set $2 - br $while-continue|019 + local.set $7 + br $while-continue|017 end end - local.get $15 - local.get $16 + local.get $3 + local.get $10 i32.store - local.get $15 - local.get $16 + local.get $3 + local.get $10 call $~lib/rt/itcms/__link - local.get $15 - local.get $13 + local.get $3 + local.get $8 i32.store offset=4 - local.get $15 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $15 - local.get $1 + local.get $3 + local.get $2 call $~lib/rt/itcms/__link + local.get $3 local.get $15 - local.get $6 i32.store offset=12 - local.get $15 - local.get $15 + local.get $3 + local.get $3 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -14765,70 +14724,70 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $3 i32.load offset=8 - local.tee $13 + local.tee $0 i32.store - local.get $15 - local.get $15 + local.get $3 + local.get $3 i32.load offset=16 - local.tee $1 + local.tee $8 i32.const 1 i32.add i32.store offset=16 - local.get $13 - local.get $1 + local.get $0 + local.get $8 i32.const 12 i32.mul i32.add - local.tee $1 - local.get $4 + local.tee $0 + local.get $1 i32.store + local.get $0 local.get $1 - local.get $4 i32.store offset=4 - local.get $15 - local.get $15 + local.get $3 + local.get $3 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $1 - local.get $15 + local.get $0 + local.get $3 i32.load - local.get $7 - local.get $15 + local.get $14 + local.get $3 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $1 i32.load i32.store offset=8 - local.get $2 local.get $1 + local.get $0 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 - local.get $9 + local.get $11 + local.get $12 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 call $~lib/map/Map#set - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $for-loop|2 end end - local.get $15 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -14840,7 +14799,7 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -14853,17 +14812,17 @@ unreachable end i32.const 0 - local.set $2 + local.set $5 loop $for-loop|3 - local.get $2 + local.get $5 i32.const 50 i32.lt_u if - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $2 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14872,22 +14831,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -14896,12 +14855,12 @@ i32.shl i32.add i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 - local.get $4 + local.set $0 + block $__inlined_func$~lib/map/Map#find19 + loop $while-continue|020 + local.get $0 if - local.get $4 + local.get $0 i32.load offset=8 local.tee $1 i32.const 1 @@ -14909,23 +14868,23 @@ if (result i32) i32.const 0 else - local.get $2 - local.get $4 + local.get $5 + local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find21 + br_if $__inlined_func$~lib/map/Map#find19 local.get $1 i32.const -2 i32.and - local.set $4 - br $while-continue|022 + local.set $0 + br $while-continue|020 end end i32.const 0 - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.eqz if i32.const 0 @@ -14935,10 +14894,10 @@ call $~lib/builtins/abort unreachable end - local.get $14 - local.get $2 + local.get $4 + local.get $5 call $~lib/map/Map#get - local.get $2 + local.get $5 i32.const 20 i32.add i32.ne @@ -14950,14 +14909,14 @@ call $~lib/builtins/abort unreachable end - local.get $14 - local.get $2 + local.get $4 + local.get $5 call $~lib/map/Map#delete - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $2 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14966,22 +14925,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -14990,12 +14949,12 @@ i32.shl i32.add i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find24 - loop $while-continue|025 - local.get $4 + local.set $0 + block $__inlined_func$~lib/map/Map#find22 + loop $while-continue|023 + local.get $0 if - local.get $4 + local.get $0 i32.load offset=8 local.tee $1 i32.const 1 @@ -15003,23 +14962,23 @@ if (result i32) i32.const 0 else - local.get $2 - local.get $4 + local.get $5 + local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find24 + br_if $__inlined_func$~lib/map/Map#find22 local.get $1 i32.const -2 i32.and - local.set $4 - br $while-continue|025 + local.set $0 + br $while-continue|023 end end i32.const 0 - local.set $4 + local.set $0 end - local.get $4 + local.get $0 if i32.const 0 i32.const 1568 @@ -15028,14 +14987,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $for-loop|3 end end - local.get $14 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -15048,17 +15007,17 @@ unreachable end i32.const 0 - local.set $2 + local.set $5 loop $for-loop|4 - local.get $2 + local.get $5 i32.const 50 i32.lt_u if - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $2 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15067,22 +15026,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -15091,12 +15050,12 @@ i32.shl i32.add i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find27 - loop $while-continue|028 - local.get $4 + local.set $0 + block $__inlined_func$~lib/map/Map#find25 + loop $while-continue|026 + local.get $0 if - local.get $4 + local.get $0 i32.load offset=8 local.tee $1 i32.const 1 @@ -15104,23 +15063,23 @@ if (result i32) i32.const 0 else - local.get $2 - local.get $4 + local.get $5 + local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find27 + br_if $__inlined_func$~lib/map/Map#find25 local.get $1 i32.const -2 i32.and - local.set $4 - br $while-continue|028 + local.set $0 + br $while-continue|026 end end i32.const 0 - local.set $4 + local.set $0 end - local.get $4 + local.get $0 if i32.const 0 i32.const 1568 @@ -15129,17 +15088,17 @@ call $~lib/builtins/abort unreachable end - local.get $14 - local.get $2 - local.get $2 + local.get $4 + local.get $5 + local.get $5 i32.const 10 i32.add call $~lib/map/Map#set - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $2 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15148,22 +15107,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -15172,12 +15131,12 @@ i32.shl i32.add i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find30 - loop $while-continue|031 - local.get $4 + local.set $0 + block $__inlined_func$~lib/map/Map#find28 + loop $while-continue|029 + local.get $0 if - local.get $4 + local.get $0 i32.load offset=8 local.tee $1 i32.const 1 @@ -15185,23 +15144,23 @@ if (result i32) i32.const 0 else - local.get $2 - local.get $4 + local.get $5 + local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find30 + br_if $__inlined_func$~lib/map/Map#find28 local.get $1 i32.const -2 i32.and - local.set $4 - br $while-continue|031 + local.set $0 + br $while-continue|029 end end i32.const 0 - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.eqz if i32.const 0 @@ -15211,14 +15170,14 @@ call $~lib/builtins/abort unreachable end - local.get $14 - local.get $2 + local.get $4 + local.get $5 call $~lib/map/Map#delete - local.get $14 + local.get $4 i32.load - local.get $14 + local.get $4 i32.load offset=4 - local.get $2 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15227,22 +15186,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -15251,12 +15210,12 @@ i32.shl i32.add i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find33 - loop $while-continue|034 - local.get $4 + local.set $0 + block $__inlined_func$~lib/map/Map#find31 + loop $while-continue|032 + local.get $0 if - local.get $4 + local.get $0 i32.load offset=8 local.tee $1 i32.const 1 @@ -15264,23 +15223,23 @@ if (result i32) i32.const 0 else - local.get $2 - local.get $4 + local.get $5 + local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find33 + br_if $__inlined_func$~lib/map/Map#find31 local.get $1 i32.const -2 i32.and - local.set $4 - br $while-continue|034 + local.set $0 + br $while-continue|032 end end i32.const 0 - local.set $4 + local.set $0 end - local.get $4 + local.get $0 if i32.const 0 i32.const 1568 @@ -15289,14 +15248,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $for-loop|4 end end - local.get $14 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -15308,9 +15267,9 @@ call $~lib/builtins/abort unreachable end - local.get $14 + local.get $4 call $~lib/map/Map#clear - local.get $14 + local.get $4 i32.load offset=20 if i32.const 0 @@ -15685,10 +15644,10 @@ ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -15891,8 +15850,8 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -15901,8 +15860,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i32) - (local $15 i64) + (local $14 i64) + (local $15 i32) (local $16 i32) (local $17 i32) global.get $~lib/memory/__stack_pointer @@ -15915,16 +15874,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i64.const 0 i64.store offset=8 - local.get $2 + local.get $3 i32.const 0 i32.store offset=16 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -15933,57 +15892,57 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i32.const 0 i32.store - local.get $3 + local.get $5 i32.const 24 i32.const 20 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store - local.get $6 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $0 i32.store - local.get $6 - local.get $3 + local.get $5 + local.get $0 call $~lib/rt/itcms/__link - local.get $6 + local.get $5 i32.const 3 i32.store offset=4 - local.get $6 + local.get $5 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $0 i32.store offset=8 - local.get $6 - local.get $3 + local.get $5 + local.get $0 call $~lib/rt/itcms/__link - local.get $6 + local.get $5 i32.const 4 i32.store offset=12 - local.get $6 + local.get $5 i32.const 0 i32.store offset=16 - local.get $6 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.store loop $for-loop|0 - local.get $5 + local.get $4 i64.const 100 i64.lt_s if - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -15993,15 +15952,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16012,10 +15971,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $5 + local.get $4 i32.wrap_i64 i32.const 10 i32.add @@ -16028,14 +15987,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i64.const 1 i64.add - local.set $5 + local.set $4 br $for-loop|0 end end - local.get $6 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -16048,14 +16007,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $4 loop $for-loop|1 - local.get $5 + local.get $4 i64.const 100 i64.lt_s if - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16066,10 +16025,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $5 + local.get $4 i32.wrap_i64 i32.const 10 i32.add @@ -16081,16 +16040,16 @@ i32.const 5 call $~lib/builtins/abort unreachable - end - local.get $6 - local.get $5 + end local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16101,10 +16060,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $5 + local.get $4 i32.wrap_i64 i32.const 20 i32.add @@ -16117,14 +16076,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i64.const 1 i64.add - local.set $5 + local.set $4 br $for-loop|1 end end - local.get $6 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -16137,7 +16096,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $11 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -16146,16 +16105,17 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $7 i32.const 0 i32.store - local.get $6 + local.get $5 i32.load offset=8 - local.set $9 - local.get $6 + local.set $12 + local.get $5 i32.load offset=16 - local.set $10 - local.get $3 + local.tee $13 + local.set $3 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -16164,31 +16124,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i64.const 0 i64.store - local.get $2 + local.get $0 i32.const 16 i32.const 21 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $6 i32.store - local.get $7 + local.get $6 i32.const 0 i32.store - local.get $7 + local.get $6 i32.const 0 call $~lib/rt/itcms/__link - local.get $7 + local.get $6 i32.const 0 i32.store offset=4 - local.get $7 + local.get $6 i32.const 0 i32.store offset=8 - local.get $7 + local.get $6 i32.const 0 i32.store offset=12 - local.get $10 + local.get $3 i32.const 134217727 i32.gt_u if @@ -16200,51 +16160,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $3 i32.const 8 - local.get $10 + local.get $3 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $2 + local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $0 i32.store offset=4 - local.get $8 - local.get $2 + local.get $0 + local.get $9 call $~lib/memory/memory.fill - local.get $7 - local.get $8 + local.get $6 + local.get $0 i32.store - local.get $7 - local.get $8 + local.get $6 + local.get $0 call $~lib/rt/itcms/__link - local.get $7 - local.get $8 + local.get $6 + local.get $0 i32.store offset=4 - local.get $7 - local.get $2 + local.get $6 + local.get $9 i32.store offset=8 - local.get $7 - local.get $10 + local.get $6 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 local.get $7 + local.get $6 i32.store loop $for-loop|01 - local.get $4 - local.get $10 + local.get $2 + local.get $13 i32.lt_s if - local.get $9 - local.get $4 + local.get $12 + local.get $2 i32.const 4 i32.shl i32.add @@ -16254,7 +16214,7 @@ i32.and i32.eqz if - local.get $7 + local.get $6 local.get $1 local.get $3 i64.load @@ -16264,35 +16224,35 @@ i32.add local.set $1 end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|01 end end - local.get $7 + local.get $6 local.get $1 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $7 + local.get $6 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $7 + local.get $11 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 call $~lib/map/Map#values - local.tee $16 + local.tee $13 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -16308,55 +16268,55 @@ i32.const 24 i32.const 22 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store - local.get $4 local.get $3 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $3 i32.const 3 i32.store offset=4 - local.get $4 + local.get $3 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=8 - local.get $4 local.get $3 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $3 i32.const 4 i32.store offset=12 - local.get $4 + local.get $3 i32.const 0 i32.store offset=16 - local.get $4 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $13 + local.tee $11 i32.store offset=16 loop $for-loop|2 - local.get $11 - local.get $7 + local.get $10 + local.get $6 i32.load offset=12 i32.lt_s if - local.get $11 - local.get $7 + local.get $10 + local.get $6 i32.load offset=12 i32.ge_u if @@ -16367,20 +16327,20 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $6 i32.load offset=4 - local.get $11 + local.get $10 i32.const 3 i32.shl i32.add i64.load - local.set $5 - local.get $16 - local.get $11 + local.set $4 + local.get $13 + local.get $10 call $~lib/array/Array#__get - local.set $14 - local.get $6 + local.set $12 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16391,8 +16351,8 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $14 + local.get $5 + local.get $12 i32.const 20 i32.sub i64.extend_i32_s @@ -16417,7 +16377,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $5 + local.get $3 + i32.load + local.get $4 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16427,7 +16389,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $5 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16438,43 +16400,39 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor - local.tee $2 - local.set $17 - local.get $4 - i32.load - local.get $2 - local.get $4 + local.tee $15 + local.get $3 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=16 local.tee $2 i32.const 1 @@ -16482,8 +16440,8 @@ if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $4 + local.get $0 i64.load i64.eq end @@ -16491,28 +16449,28 @@ local.get $2 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if - local.get $1 - local.get $5 + local.get $0 + local.get $4 i64.store offset=8 else - local.get $4 + local.get $3 i32.load offset=16 - local.get $4 + local.get $3 i32.load offset=12 i32.eq if - local.get $4 + local.get $3 i32.load offset=20 - local.get $4 + local.get $3 i32.load offset=12 i32.const 3 i32.mul @@ -16520,17 +16478,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $3 i32.load offset=4 else - local.get $4 + local.get $3 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -16540,66 +16498,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i64.const 0 i64.store - local.get $2 - local.get $9 + local.get $0 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $12 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $1 + local.tee $16 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $4 + local.get $3 i32.load offset=8 - local.tee $3 - local.get $4 + local.tee $7 + local.get $3 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $10 + local.set $17 local.get $2 local.set $0 - loop $while-continue|02 - local.get $3 - local.get $10 + loop $while-continue|00 + local.get $7 + local.get $17 i32.ne if - local.get $3 + local.get $7 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $3 + local.get $7 i64.load - local.tee $15 + local.tee $14 i64.store local.get $0 - local.get $3 + local.get $7 i64.load offset=8 i64.store offset=8 local.get $0 - local.get $12 local.get $9 - local.get $15 + local.get $1 + local.get $14 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16609,7 +16567,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $15 + local.get $14 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16654,33 +16612,33 @@ i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 24 i32.add - local.set $3 - br $while-continue|02 + local.set $7 + br $while-continue|00 end end - local.get $4 - local.get $12 + local.get $3 + local.get $9 i32.store - local.get $4 - local.get $12 - call $~lib/rt/itcms/__link - local.get $4 + local.get $3 local.get $9 + call $~lib/rt/itcms/__link + local.get $3 + local.get $1 i32.store offset=4 - local.get $4 + local.get $3 local.get $2 i32.store offset=8 - local.get $4 + local.get $3 local.get $2 call $~lib/rt/itcms/__link - local.get $4 - local.get $1 + local.get $3 + local.get $16 i32.store offset=12 - local.get $4 - local.get $4 + local.get $3 + local.get $3 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -16689,70 +16647,70 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.load offset=8 - local.tee $9 + local.tee $0 i32.store - local.get $4 - local.get $4 + local.get $3 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $9 - local.get $2 + local.get $0 + local.get $1 i32.const 24 i32.mul i32.add - local.tee $2 - local.get $5 - i64.store - local.get $2 - local.get $5 - i64.store offset=8 + local.tee $0 local.get $4 + i64.store + local.get $0 local.get $4 + i64.store offset=8 + local.get $3 + local.get $3 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.load - local.get $17 - local.get $4 + local.get $15 + local.get $3 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $1 i32.load i32.store offset=16 - local.get $3 - local.get $2 + local.get $1 + local.get $0 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 - local.get $14 + local.get $11 + local.get $12 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 call $~lib/map/Map#set - local.get $11 + local.get $10 i32.const 1 i32.add - local.set $11 + local.set $10 br $for-loop|2 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -16764,7 +16722,7 @@ call $~lib/builtins/abort unreachable end - local.get $13 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -16777,14 +16735,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $4 loop $for-loop|3 - local.get $5 + local.get $4 i64.const 50 i64.lt_s if - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16795,10 +16753,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $5 + local.get $4 i32.wrap_i64 i32.const 20 i32.add @@ -16811,11 +16769,11 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -16825,14 +16783,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i64.const 1 i64.add - local.set $5 + local.set $4 br $for-loop|3 end end - local.get $6 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -16845,14 +16803,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $4 loop $for-loop|4 - local.get $5 + local.get $4 i64.const 50 i64.lt_s if - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -16862,15 +16820,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16881,11 +16839,11 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -16895,14 +16853,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i64.const 1 i64.add - local.set $5 + local.set $4 br $for-loop|4 end end - local.get $6 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -16914,9 +16872,9 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 call $~lib/map/Map#clear - local.get $6 + local.get $5 i32.load offset=20 if i32.const 0 @@ -17427,8 +17385,8 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -17437,8 +17395,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i32) - (local $15 i64) + (local $14 i64) + (local $15 i32) (local $16 i32) (local $17 i32) global.get $~lib/memory/__stack_pointer @@ -17451,16 +17409,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i64.const 0 i64.store offset=8 - local.get $2 + local.get $3 i32.const 0 i32.store offset=16 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17469,57 +17427,57 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i32.const 0 i32.store - local.get $3 + local.get $5 i32.const 24 i32.const 23 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store - local.get $6 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $0 i32.store - local.get $6 - local.get $3 + local.get $5 + local.get $0 call $~lib/rt/itcms/__link - local.get $6 + local.get $5 i32.const 3 i32.store offset=4 - local.get $6 + local.get $5 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $0 i32.store offset=8 - local.get $6 - local.get $3 + local.get $5 + local.get $0 call $~lib/rt/itcms/__link - local.get $6 + local.get $5 i32.const 4 i32.store offset=12 - local.get $6 + local.get $5 i32.const 0 i32.store offset=16 - local.get $6 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.store loop $for-loop|0 - local.get $5 + local.get $4 i64.const 100 i64.lt_u if - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -17529,15 +17487,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -17548,10 +17506,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $5 + local.get $4 i32.wrap_i64 i32.const 10 i32.add @@ -17564,14 +17522,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i64.const 1 i64.add - local.set $5 + local.set $4 br $for-loop|0 end end - local.get $6 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -17584,14 +17542,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $4 loop $for-loop|1 - local.get $5 + local.get $4 i64.const 100 i64.lt_u if - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -17602,10 +17560,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $5 + local.get $4 i32.wrap_i64 i32.const 10 i32.add @@ -17618,15 +17576,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -17637,10 +17595,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $5 + local.get $4 i32.wrap_i64 i32.const 20 i32.add @@ -17653,14 +17611,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i64.const 1 i64.add - local.set $5 + local.set $4 br $for-loop|1 end end - local.get $6 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -17673,7 +17631,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $11 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17682,16 +17640,17 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $7 i32.const 0 i32.store - local.get $6 + local.get $5 i32.load offset=8 - local.set $9 - local.get $6 + local.set $12 + local.get $5 i32.load offset=16 - local.set $10 - local.get $3 + local.tee $13 + local.set $3 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -17700,31 +17659,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i64.const 0 i64.store - local.get $2 + local.get $0 i32.const 16 i32.const 24 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $6 i32.store - local.get $7 + local.get $6 i32.const 0 i32.store - local.get $7 + local.get $6 i32.const 0 call $~lib/rt/itcms/__link - local.get $7 + local.get $6 i32.const 0 i32.store offset=4 - local.get $7 + local.get $6 i32.const 0 i32.store offset=8 - local.get $7 + local.get $6 i32.const 0 i32.store offset=12 - local.get $10 + local.get $3 i32.const 134217727 i32.gt_u if @@ -17736,51 +17695,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $3 i32.const 8 - local.get $10 + local.get $3 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $2 + local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $0 i32.store offset=4 - local.get $8 - local.get $2 + local.get $0 + local.get $9 call $~lib/memory/memory.fill - local.get $7 - local.get $8 - i32.store - local.get $7 - local.get $8 + local.get $6 + local.get $0 + i32.store + local.get $6 + local.get $0 call $~lib/rt/itcms/__link - local.get $7 - local.get $8 + local.get $6 + local.get $0 i32.store offset=4 - local.get $7 - local.get $2 + local.get $6 + local.get $9 i32.store offset=8 - local.get $7 - local.get $10 + local.get $6 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 local.get $7 + local.get $6 i32.store loop $for-loop|01 - local.get $4 - local.get $10 + local.get $2 + local.get $13 i32.lt_s if - local.get $9 - local.get $4 + local.get $12 + local.get $2 i32.const 4 i32.shl i32.add @@ -17790,7 +17749,7 @@ i32.and i32.eqz if - local.get $7 + local.get $6 local.get $1 local.get $3 i64.load @@ -17800,35 +17759,35 @@ i32.add local.set $1 end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|01 end end - local.get $7 + local.get $6 local.get $1 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $7 + local.get $6 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $7 + local.get $11 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 call $~lib/map/Map#values - local.tee $16 + local.tee $13 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17844,55 +17803,55 @@ i32.const 24 i32.const 25 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store - local.get $4 local.get $3 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $3 i32.const 3 i32.store offset=4 - local.get $4 + local.get $3 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=8 - local.get $4 local.get $3 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $3 i32.const 4 i32.store offset=12 - local.get $4 + local.get $3 i32.const 0 i32.store offset=16 - local.get $4 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $13 + local.tee $11 i32.store offset=16 loop $for-loop|2 - local.get $11 - local.get $7 + local.get $10 + local.get $6 i32.load offset=12 i32.lt_s if - local.get $11 - local.get $7 + local.get $10 + local.get $6 i32.load offset=12 i32.ge_u if @@ -17903,20 +17862,20 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $6 i32.load offset=4 - local.get $11 + local.get $10 i32.const 3 i32.shl i32.add i64.load - local.set $5 - local.get $16 - local.get $11 + local.set $4 + local.get $13 + local.get $10 call $~lib/array/Array#__get - local.set $14 - local.get $6 + local.set $12 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -17927,8 +17886,8 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $14 + local.get $5 + local.get $12 i32.const 20 i32.sub i64.extend_i32_s @@ -17953,7 +17912,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $5 + local.get $3 + i32.load + local.get $4 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -17963,7 +17924,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $5 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 @@ -17974,43 +17935,39 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor - local.tee $2 - local.set $17 - local.get $4 - i32.load - local.get $2 - local.get $4 + local.tee $15 + local.get $3 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=16 local.tee $2 i32.const 1 @@ -18018,8 +17975,8 @@ if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $4 + local.get $0 i64.load i64.eq end @@ -18027,28 +17984,28 @@ local.get $2 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if - local.get $1 - local.get $5 + local.get $0 + local.get $4 i64.store offset=8 else - local.get $4 + local.get $3 i32.load offset=16 - local.get $4 + local.get $3 i32.load offset=12 i32.eq if - local.get $4 + local.get $3 i32.load offset=20 - local.get $4 + local.get $3 i32.load offset=12 i32.const 3 i32.mul @@ -18056,17 +18013,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $3 i32.load offset=4 else - local.get $4 + local.get $3 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -18076,66 +18033,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i64.const 0 i64.store - local.get $2 - local.get $9 + local.get $0 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $12 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $1 + local.tee $16 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $4 + local.get $3 i32.load offset=8 - local.tee $3 - local.get $4 + local.tee $7 + local.get $3 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $10 + local.set $17 local.get $2 local.set $0 - loop $while-continue|02 - local.get $3 - local.get $10 + loop $while-continue|00 + local.get $7 + local.get $17 i32.ne if - local.get $3 + local.get $7 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $3 + local.get $7 i64.load - local.tee $15 + local.tee $14 i64.store local.get $0 - local.get $3 + local.get $7 i64.load offset=8 i64.store offset=8 local.get $0 - local.get $12 local.get $9 - local.get $15 + local.get $1 + local.get $14 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -18145,7 +18102,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $15 + local.get $14 i64.const 32 i64.shr_u i32.wrap_i64 @@ -18190,33 +18147,33 @@ i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 24 i32.add - local.set $3 - br $while-continue|02 + local.set $7 + br $while-continue|00 end end - local.get $4 - local.get $12 + local.get $3 + local.get $9 i32.store - local.get $4 - local.get $12 - call $~lib/rt/itcms/__link - local.get $4 + local.get $3 local.get $9 + call $~lib/rt/itcms/__link + local.get $3 + local.get $1 i32.store offset=4 - local.get $4 + local.get $3 local.get $2 i32.store offset=8 - local.get $4 + local.get $3 local.get $2 call $~lib/rt/itcms/__link - local.get $4 - local.get $1 + local.get $3 + local.get $16 i32.store offset=12 - local.get $4 - local.get $4 + local.get $3 + local.get $3 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -18225,70 +18182,70 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.load offset=8 - local.tee $9 + local.tee $0 i32.store - local.get $4 - local.get $4 + local.get $3 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $9 - local.get $2 + local.get $0 + local.get $1 i32.const 24 i32.mul i32.add - local.tee $2 - local.get $5 - i64.store - local.get $2 - local.get $5 - i64.store offset=8 + local.tee $0 local.get $4 + i64.store + local.get $0 local.get $4 + i64.store offset=8 + local.get $3 + local.get $3 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.load - local.get $17 - local.get $4 + local.get $15 + local.get $3 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $1 i32.load i32.store offset=16 - local.get $3 - local.get $2 + local.get $1 + local.get $0 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 - local.get $14 + local.get $11 + local.get $12 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 call $~lib/map/Map#set - local.get $11 + local.get $10 i32.const 1 i32.add - local.set $11 + local.set $10 br $for-loop|2 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -18300,7 +18257,7 @@ call $~lib/builtins/abort unreachable end - local.get $13 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -18313,14 +18270,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $4 loop $for-loop|3 - local.get $5 + local.get $4 i64.const 50 i64.lt_u if - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -18331,10 +18288,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $5 + local.get $4 i32.wrap_i64 i32.const 20 i32.add @@ -18347,11 +18304,11 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -18361,14 +18318,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i64.const 1 i64.add - local.set $5 + local.set $4 br $for-loop|3 end end - local.get $6 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -18381,14 +18338,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $4 loop $for-loop|4 - local.get $5 + local.get $4 i64.const 50 i64.lt_u if - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -18398,15 +18355,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -18417,11 +18374,11 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $6 local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -18431,14 +18388,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i64.const 1 i64.add - local.set $5 + local.set $4 br $for-loop|4 end end - local.get $6 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -18450,9 +18407,9 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 call $~lib/map/Map#clear - local.get $6 + local.get $5 i32.load offset=20 if i32.const 0 @@ -18848,7 +18805,7 @@ (local $3 f32) (local $4 i32) (local $5 i32) - (local $6 f32) + (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) @@ -18856,7 +18813,7 @@ (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i32) + (local $14 f32) (local $15 i32) (local $16 i32) (local $17 i32) @@ -18888,41 +18845,41 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $4 i32.const 0 i32.store - local.get $0 + local.get $4 i32.const 24 i32.const 26 call $~lib/rt/itcms/__new - local.tee $17 + local.tee $4 i32.store - local.get $17 + local.get $4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $0 i32.store - local.get $17 + local.get $4 local.get $0 call $~lib/rt/itcms/__link - local.get $17 + local.get $4 i32.const 3 i32.store offset=4 - local.get $17 + local.get $4 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $0 i32.store offset=8 - local.get $17 + local.get $4 local.get $0 call $~lib/rt/itcms/__link - local.get $17 + local.get $4 i32.const 4 i32.store offset=12 - local.get $17 + local.get $4 i32.const 0 i32.store offset=16 - local.get $17 + local.get $4 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer @@ -18930,18 +18887,18 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $17 + local.get $4 i32.store loop $for-loop|0 - local.get $6 + local.get $3 f32.const 100 f32.lt if - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18988,7 +18945,7 @@ if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $1 f32.load f32.eq @@ -19013,18 +18970,18 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 - local.get $6 + local.get $4 + local.get $3 + local.get $3 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19071,7 +19028,7 @@ if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $1 f32.load f32.eq @@ -19097,10 +19054,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $6 + local.get $3 i32.trunc_f32_s i32.const 10 i32.add @@ -19113,14 +19070,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 f32.const 1 f32.add - local.set $6 + local.set $3 br $for-loop|0 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -19133,17 +19090,17 @@ unreachable end f32.const 0 - local.set $6 + local.set $3 loop $for-loop|1 - local.get $6 + local.get $3 f32.const 100 f32.lt if - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19190,7 +19147,7 @@ if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $1 f32.load f32.eq @@ -19216,10 +19173,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $6 + local.get $3 i32.trunc_f32_s i32.const 10 i32.add @@ -19232,18 +19189,18 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 - local.get $6 + local.get $4 + local.get $3 + local.get $3 i32.trunc_f32_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19290,7 +19247,7 @@ if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $1 f32.load f32.eq @@ -19316,10 +19273,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $6 + local.get $3 i32.trunc_f32_s i32.const 20 i32.add @@ -19332,14 +19289,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 f32.const 1 f32.add - local.set $6 + local.set $3 br $for-loop|1 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -19351,8 +19308,10 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $13 + local.tee $11 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -19361,18 +19320,17 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $7 i32.const 0 i32.store - local.get $17 + local.get $4 i32.load offset=8 - local.set $11 - local.get $17 + local.set $12 + local.get $4 i32.load offset=16 - local.tee $10 - local.set $5 - local.get $1 - local.tee $0 + local.tee $13 + local.set $0 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -19381,31 +19339,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $1 + local.get $5 i32.const 16 i32.const 27 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.store - local.get $1 + local.get $6 i32.const 0 i32.store - local.get $1 + local.get $6 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $6 i32.const 0 i32.store offset=4 - local.get $1 + local.get $6 i32.const 0 i32.store offset=8 - local.get $1 + local.get $6 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 268435455 i32.gt_u if @@ -19417,51 +19375,51 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $0 i32.const 8 - local.get $5 + local.get $0 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $15 + local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $16 + local.tee $5 i32.store offset=4 - local.get $16 - local.get $15 + local.get $5 + local.get $9 call $~lib/memory/memory.fill - local.get $1 - local.get $16 + local.get $6 + local.get $5 i32.store - local.get $1 - local.get $16 + local.get $6 + local.get $5 call $~lib/rt/itcms/__link - local.get $1 - local.get $16 + local.get $6 + local.get $5 i32.store offset=4 - local.get $1 - local.get $15 + local.get $6 + local.get $9 i32.store offset=8 - local.get $1 - local.get $5 + local.get $6 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $1 + local.get $7 + local.get $6 i32.store loop $for-loop|01 - local.get $4 - local.get $10 + local.get $2 + local.get $13 i32.lt_s if - local.get $11 - local.get $4 + local.get $12 + local.get $2 i32.const 12 i32.mul i32.add @@ -19471,16 +19429,16 @@ i32.and i32.eqz if - local.get $2 + local.get $1 local.tee $0 i32.const 1 i32.add - local.set $2 + local.set $1 local.get $5 f32.load - local.set $6 + local.set $3 local.get $0 - local.get $1 + local.get $6 i32.load offset=12 i32.ge_u if @@ -19495,7 +19453,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $6 local.get $0 i32.const 1 i32.add @@ -19503,49 +19461,48 @@ i32.const 2 i32.const 1 call $~lib/array/ensureCapacity - local.get $1 + local.get $6 local.get $5 i32.store offset=12 end - local.get $1 + local.get $6 i32.load offset=4 local.get $0 i32.const 2 i32.shl i32.add - local.get $6 + local.get $3 f32.store end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|01 end end + local.get $6 local.get $1 - local.get $2 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity + local.get $6 local.get $1 - local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 - local.get $1 - local.tee $5 + local.get $11 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $4 call $~lib/map/Map#values - local.tee $9 + local.tee $13 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -19554,62 +19511,62 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.const 28 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store - local.get $2 - local.get $0 + local.get $1 + local.get $5 call $~lib/rt/itcms/__link - local.get $2 + local.get $1 i32.const 3 i32.store offset=4 - local.get $2 + local.get $1 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store offset=8 - local.get $2 - local.get $0 + local.get $1 + local.get $5 call $~lib/rt/itcms/__link - local.get $2 + local.get $1 i32.const 4 i32.store offset=12 - local.get $2 + local.get $1 i32.const 0 i32.store offset=16 - local.get $2 + local.get $1 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 local.get $1 - local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor local.tee $11 i32.store offset=16 loop $for-loop|2 - local.get $12 - local.get $5 + local.get $10 + local.get $6 i32.load offset=12 i32.lt_s if - local.get $12 - local.get $5 + local.get $10 + local.get $6 i32.load offset=12 i32.ge_u if @@ -19620,23 +19577,23 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.load offset=4 - local.get $12 + local.get $10 i32.const 2 i32.shl i32.add f32.load - local.set $6 - local.get $9 - local.get $12 + local.set $3 + local.get $13 + local.get $10 call $~lib/array/Array#__get - local.set $10 - local.get $17 + local.set $12 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19646,22 +19603,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -19670,36 +19627,36 @@ i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find11 - loop $while-continue|012 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $16 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 - local.get $1 + local.get $3 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find11 - local.get $16 + br_if $__inlined_func$~lib/map/Map#find10 + local.get $2 i32.const -2 i32.and - local.set $1 - br $while-continue|012 + local.set $0 + br $while-continue|011 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -19709,15 +19666,15 @@ call $~lib/builtins/abort unreachable end - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $10 + local.get $12 i32.const 20 i32.sub f32.convert_i32_s - local.tee $3 + local.tee $14 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19727,22 +19684,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -19751,36 +19708,36 @@ i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find14 - loop $while-continue|015 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $16 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $14 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find14 - local.get $16 + br_if $__inlined_func$~lib/map/Map#find13 + local.get $2 i32.const -2 i32.and - local.set $1 - br $while-continue|015 + local.set $0 + br $while-continue|014 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -19801,10 +19758,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $2 + local.get $1 i32.load - local.get $6 - local.tee $3 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19833,8 +19789,8 @@ i32.const 16 i32.shr_u i32.xor - local.tee $8 - local.get $2 + local.tee $15 + local.get $1 i32.load offset=4 i32.and i32.const 2 @@ -19842,13 +19798,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/map/Map#find17 - loop $while-continue|018 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 local.get $0 if local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.const 1 i32.and if (result i32) @@ -19859,12 +19815,12 @@ f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find17 - local.get $4 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $2 i32.const -2 i32.and local.set $0 - br $while-continue|018 + br $while-continue|016 end end i32.const 0 @@ -19876,15 +19832,15 @@ local.get $3 f32.store offset=4 else - local.get $2 + local.get $1 i32.load offset=16 - local.get $2 + local.get $1 i32.load offset=12 i32.eq if - local.get $2 + local.get $1 i32.load offset=20 - local.get $2 + local.get $1 i32.load offset=12 i32.const 3 i32.mul @@ -19892,17 +19848,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $2 + local.get $1 i32.load offset=4 else - local.get $2 + local.get $1 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $16 + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -19916,14 +19872,14 @@ i64.const 0 i64.store local.get $0 - local.get $16 + local.get $5 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $13 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -19931,47 +19887,47 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $16 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $2 i32.store offset=4 - local.get $2 + local.get $1 i32.load offset=8 - local.tee $15 - local.get $2 + local.tee $7 + local.get $1 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $1 - local.get $4 + local.set $17 + local.get $2 local.set $0 - loop $while-continue|019 - local.get $1 - local.get $15 + loop $while-continue|017 + local.get $7 + local.get $17 i32.ne if - local.get $15 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $15 + local.get $7 f32.load - local.tee $6 + local.tee $14 f32.store local.get $0 - local.get $15 + local.get $7 f32.load offset=4 f32.store offset=4 local.get $0 - local.get $13 - local.get $16 - local.get $6 + local.get $9 + local.get $5 + local.get $14 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19981,22 +19937,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $14 - local.get $14 + local.tee $8 + local.get $8 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $14 - local.get $14 + local.tee $8 + local.get $8 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $14 - local.get $14 + local.tee $8 + local.get $8 i32.const 16 i32.shr_u i32.xor @@ -20004,10 +19960,10 @@ i32.const 2 i32.shl i32.add - local.tee $14 + local.tee $8 i32.load i32.store offset=8 - local.get $14 + local.get $8 local.get $0 i32.store local.get $0 @@ -20015,33 +19971,33 @@ i32.add local.set $0 end - local.get $15 + local.get $7 i32.const 12 i32.add - local.set $15 - br $while-continue|019 + local.set $7 + br $while-continue|017 end end - local.get $2 - local.get $13 + local.get $1 + local.get $9 i32.store - local.get $2 - local.get $13 + local.get $1 + local.get $9 call $~lib/rt/itcms/__link - local.get $2 - local.get $16 + local.get $1 + local.get $5 i32.store offset=4 + local.get $1 local.get $2 - local.get $4 i32.store offset=8 + local.get $1 local.get $2 - local.get $4 call $~lib/rt/itcms/__link - local.get $2 - local.get $7 + local.get $1 + local.get $16 i32.store offset=12 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -20050,19 +20006,19 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load offset=8 local.tee $0 i32.store - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.load offset=16 - local.tee $16 + local.tee $5 i32.const 1 i32.add i32.store offset=16 local.get $0 - local.get $16 + local.get $5 i32.const 12 i32.mul i32.add @@ -20072,26 +20028,26 @@ local.get $0 local.get $3 f32.store offset=4 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $2 + local.get $1 i32.load - local.get $8 - local.get $2 + local.get $15 + local.get $1 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $5 i32.load i32.store offset=8 - local.get $1 + local.get $5 local.get $0 i32.store end @@ -20100,20 +20056,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $11 - local.get $10 + local.get $12 i32.const 20 i32.sub - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 call $~lib/map/Map#set - local.get $12 + local.get $10 i32.const 1 i32.add - local.set $12 + local.set $10 br $for-loop|2 end end - local.get $2 + local.get $1 i32.load offset=20 i32.const 100 i32.ne @@ -20138,17 +20094,17 @@ unreachable end f32.const 0 - local.set $6 + local.set $3 loop $for-loop|3 - local.get $6 + local.get $3 f32.const 50 f32.lt if - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20183,29 +20139,29 @@ i32.add i32.load local.set $1 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 + block $__inlined_func$~lib/map/Map#find19 + loop $while-continue|020 local.get $1 if local.get $1 i32.load offset=8 - local.tee $2 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $1 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find21 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find19 + local.get $5 i32.const -2 i32.and local.set $1 - br $while-continue|022 + br $while-continue|020 end end i32.const 0 @@ -20221,10 +20177,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $6 + local.get $3 i32.trunc_f32_s i32.const 20 i32.add @@ -20237,14 +20193,14 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20279,29 +20235,29 @@ i32.add i32.load local.set $1 - block $__inlined_func$~lib/map/Map#find24 - loop $while-continue|025 + block $__inlined_func$~lib/map/Map#find22 + loop $while-continue|023 local.get $1 if local.get $1 i32.load offset=8 - local.tee $2 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $1 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find24 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find22 + local.get $5 i32.const -2 i32.and local.set $1 - br $while-continue|025 + br $while-continue|023 end end i32.const 0 @@ -20316,14 +20272,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 f32.const 1 f32.add - local.set $6 + local.set $3 br $for-loop|3 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -20336,17 +20292,17 @@ unreachable end f32.const 0 - local.set $6 + local.set $3 loop $for-loop|4 - local.get $6 + local.get $3 f32.const 50 f32.lt if - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20381,29 +20337,29 @@ i32.add i32.load local.set $1 - block $__inlined_func$~lib/map/Map#find27 - loop $while-continue|028 + block $__inlined_func$~lib/map/Map#find25 + loop $while-continue|026 local.get $1 if local.get $1 i32.load offset=8 - local.tee $2 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $1 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find27 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find25 + local.get $5 i32.const -2 i32.and local.set $1 - br $while-continue|028 + br $while-continue|026 end end i32.const 0 @@ -20418,18 +20374,18 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 - local.get $6 + local.get $4 + local.get $3 + local.get $3 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20464,29 +20420,29 @@ i32.add i32.load local.set $1 - block $__inlined_func$~lib/map/Map#find30 - loop $while-continue|031 + block $__inlined_func$~lib/map/Map#find28 + loop $while-continue|029 local.get $1 if local.get $1 i32.load offset=8 - local.tee $2 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $1 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find30 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find28 + local.get $5 i32.const -2 i32.and local.set $1 - br $while-continue|031 + br $while-continue|029 end end i32.const 0 @@ -20502,14 +20458,14 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $17 + local.get $4 i32.load - local.get $17 + local.get $4 i32.load offset=4 - local.get $6 + local.get $3 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20544,29 +20500,29 @@ i32.add i32.load local.set $1 - block $__inlined_func$~lib/map/Map#find33 - loop $while-continue|034 + block $__inlined_func$~lib/map/Map#find31 + loop $while-continue|032 local.get $1 if local.get $1 i32.load offset=8 - local.tee $2 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $1 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find33 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find31 + local.get $5 i32.const -2 i32.and local.set $1 - br $while-continue|034 + br $while-continue|032 end end i32.const 0 @@ -20581,14 +20537,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 f32.const 1 f32.add - local.set $6 + local.set $3 br $for-loop|4 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -20600,9 +20556,9 @@ call $~lib/builtins/abort unreachable end - local.get $17 + local.get $4 call $~lib/map/Map#clear - local.get $17 + local.get $4 i32.load offset=20 if i32.const 0 @@ -21124,18 +21080,18 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 f64) + (local $3 f64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i32) + (local $14 i64) (local $15 i32) (local $16 i32) (local $17 i32) @@ -21150,16 +21106,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $15 + local.tee $1 i64.const 0 i64.store - local.get $15 + local.get $1 i64.const 0 i64.store offset=8 - local.get $15 + local.get $1 i32.const 0 i32.store offset=16 - local.get $15 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -21168,57 +21124,57 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 0 i32.store - local.get $2 + local.get $4 i32.const 24 i32.const 29 call $~lib/rt/itcms/__new - local.tee $17 + local.tee $4 i32.store - local.get $17 + local.get $4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $0 i32.store - local.get $17 - local.get $2 + local.get $4 + local.get $0 call $~lib/rt/itcms/__link - local.get $17 + local.get $4 i32.const 3 i32.store offset=4 - local.get $17 + local.get $4 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $0 i32.store offset=8 - local.get $17 - local.get $2 + local.get $4 + local.get $0 call $~lib/rt/itcms/__link - local.get $17 + local.get $4 i32.const 4 i32.store offset=12 - local.get $17 + local.get $4 i32.const 0 i32.store offset=16 - local.get $17 + local.get $4 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $17 + local.get $1 + local.get $4 i32.store loop $for-loop|0 - local.get $18 + local.get $3 f64.const 100 f64.lt if - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -21228,15 +21184,15 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 - local.get $18 + local.get $4 + local.get $3 + local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21247,10 +21203,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $18 + local.get $3 i32.trunc_f64_s i32.const 10 i32.add @@ -21263,14 +21219,14 @@ call $~lib/builtins/abort unreachable end - local.get $18 + local.get $3 f64.const 1 f64.add - local.set $18 + local.set $3 br $for-loop|0 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -21283,14 +21239,14 @@ unreachable end f64.const 0 - local.set $18 + local.set $3 loop $for-loop|1 - local.get $18 + local.get $3 f64.const 100 f64.lt if - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21301,10 +21257,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $18 + local.get $3 i32.trunc_f64_s i32.const 10 i32.add @@ -21317,15 +21273,15 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 - local.get $18 + local.get $4 + local.get $3 + local.get $3 i32.trunc_f64_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21336,10 +21292,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $18 + local.get $3 i32.trunc_f64_s i32.const 20 i32.add @@ -21352,14 +21308,14 @@ call $~lib/builtins/abort unreachable end - local.get $18 + local.get $3 f64.const 1 f64.add - local.set $18 + local.set $3 br $for-loop|1 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -21371,8 +21327,10 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $14 + local.tee $11 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -21381,17 +21339,17 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $7 i32.const 0 i32.store - local.get $17 + local.get $4 i32.load offset=8 - local.set $3 - local.get $17 + local.set $12 + local.get $4 i32.load offset=16 - local.tee $0 - local.set $13 - local.get $2 + local.tee $13 + local.set $0 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -21400,31 +21358,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $15 + local.tee $5 i64.const 0 i64.store - local.get $15 + local.get $5 i32.const 16 i32.const 30 call $~lib/rt/itcms/__new - local.tee $16 + local.tee $6 i32.store - local.get $16 + local.get $6 i32.const 0 i32.store - local.get $16 + local.get $6 i32.const 0 call $~lib/rt/itcms/__link - local.get $16 + local.get $6 i32.const 0 i32.store offset=4 - local.get $16 + local.get $6 i32.const 0 i32.store offset=8 - local.get $16 + local.get $6 i32.const 0 i32.store offset=12 - local.get $13 + local.get $0 i32.const 134217727 i32.gt_u if @@ -21436,74 +21394,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $0 i32.const 8 - local.get $13 + local.get $0 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $15 + local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $12 + local.tee $5 i32.store offset=4 - local.get $12 - local.get $15 + local.get $5 + local.get $9 call $~lib/memory/memory.fill - local.get $16 - local.get $12 + local.get $6 + local.get $5 i32.store - local.get $16 - local.get $12 + local.get $6 + local.get $5 call $~lib/rt/itcms/__link - local.get $16 - local.get $12 + local.get $6 + local.get $5 i32.store offset=4 - local.get $16 - local.get $15 + local.get $6 + local.get $9 i32.store offset=8 - local.get $16 - local.get $13 + local.get $6 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $16 + local.get $7 + local.get $6 i32.store loop $for-loop|01 - local.get $0 - local.get $10 - i32.gt_s + local.get $2 + local.get $13 + i32.lt_s if - local.get $3 - local.get $10 + local.get $12 + local.get $2 i32.const 4 i32.shl i32.add - local.tee $15 + local.tee $5 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $1 - local.tee $2 + local.tee $0 i32.const 1 i32.add local.set $1 - local.get $15 + local.get $5 f64.load - local.set $18 - local.get $2 - local.get $16 + local.set $3 + local.get $0 + local.get $6 i32.load offset=12 i32.ge_u if - local.get $2 + local.get $0 i32.const 0 i32.lt_s if @@ -21514,56 +21472,56 @@ call $~lib/builtins/abort unreachable end - local.get $16 - local.get $2 + local.get $6 + local.get $0 i32.const 1 i32.add - local.tee $15 + local.tee $5 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $16 - local.get $15 + local.get $6 + local.get $5 i32.store offset=12 end - local.get $16 + local.get $6 i32.load offset=4 - local.get $2 + local.get $0 i32.const 3 i32.shl i32.add - local.get $18 + local.get $3 f64.store end - local.get $10 + local.get $2 i32.const 1 i32.add - local.set $10 + local.set $2 br $for-loop|01 end end - local.get $16 + local.get $6 local.get $1 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $16 + local.get $6 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 - local.get $16 + local.get $11 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $4 call $~lib/map/Map#values - local.tee $5 + local.tee $13 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -21572,62 +21530,62 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.const 31 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $5 i32.store - local.get $3 - local.get $2 + local.get $1 + local.get $5 call $~lib/rt/itcms/__link - local.get $3 + local.get $1 i32.const 3 i32.store offset=4 - local.get $3 + local.get $1 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $5 i32.store offset=8 - local.get $3 - local.get $2 + local.get $1 + local.get $5 call $~lib/rt/itcms/__link - local.get $3 + local.get $1 i32.const 4 i32.store offset=12 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 local.get $1 - local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $7 + local.tee $11 i32.store offset=16 loop $for-loop|2 - local.get $9 - local.get $16 + local.get $10 + local.get $6 i32.load offset=12 i32.lt_s if - local.get $9 - local.get $16 + local.get $10 + local.get $6 i32.load offset=12 i32.ge_u if @@ -21638,20 +21596,20 @@ call $~lib/builtins/abort unreachable end - local.get $16 + local.get $6 i32.load offset=4 - local.get $9 + local.get $10 i32.const 3 i32.shl i32.add f64.load - local.set $18 - local.get $5 - local.get $9 + local.set $3 + local.get $13 + local.get $10 call $~lib/array/Array#__get - local.set $6 - local.get $17 - local.get $18 + local.set $12 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21662,8 +21620,8 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 + local.get $4 + local.get $12 i32.const 20 i32.sub f64.convert_i32_s @@ -21688,9 +21646,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $18 + local.get $1 + i32.load + local.get $3 i64.reinterpret_f64 - local.tee $8 + local.tee $14 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21700,7 +21660,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $8 + local.get $14 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21711,31 +21671,27 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor - local.tee $1 - local.set $13 - local.get $3 - i32.load + local.tee $15 local.get $1 - local.get $3 i32.load offset=4 i32.and i32.const 2 @@ -21749,19 +21705,19 @@ if local.get $0 i32.load offset=16 - local.tee $1 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $18 + local.get $3 local.get $0 f64.load f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $2 i32.const -2 i32.and local.set $0 @@ -21774,18 +21730,18 @@ local.get $0 if local.get $0 - local.get $18 + local.get $3 f64.store offset=8 else - local.get $3 + local.get $1 i32.load offset=16 - local.get $3 + local.get $1 i32.load offset=12 i32.eq if - local.get $3 + local.get $1 i32.load offset=20 - local.get $3 + local.get $1 i32.load offset=12 i32.const 3 i32.mul @@ -21793,17 +21749,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $1 i32.load offset=4 else - local.get $3 + local.get $1 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $15 + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -21813,68 +21769,68 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 - local.get $15 + local.get $0 + local.get $5 i32.const 1 i32.add - local.tee $1 + local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $12 + local.tee $16 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $3 + local.get $1 i32.load offset=8 - local.tee $11 - local.get $3 + local.tee $7 + local.get $1 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $10 - local.get $1 + local.set $17 + local.get $2 local.set $0 - loop $while-continue|02 - local.get $10 - local.get $11 + loop $while-continue|00 + local.get $7 + local.get $17 i32.ne if - local.get $11 + local.get $7 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $11 + local.get $7 f64.load - local.tee $4 + local.tee $18 f64.store local.get $0 - local.get $11 + local.get $7 f64.load offset=8 f64.store offset=8 local.get $0 - local.get $2 - local.get $15 - local.get $4 + local.get $9 + local.get $5 + local.get $18 i64.reinterpret_f64 - local.tee $8 + local.tee $14 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21884,7 +21840,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $8 + local.get $14 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21895,22 +21851,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $14 - local.get $14 + local.tee $8 + local.get $8 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $14 - local.get $14 + local.tee $8 + local.get $8 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $14 - local.get $14 + local.tee $8 + local.get $8 i32.const 16 i32.shr_u i32.xor @@ -21918,10 +21874,10 @@ i32.const 2 i32.shl i32.add - local.tee $14 + local.tee $8 i32.load i32.store offset=16 - local.get $14 + local.get $8 local.get $0 i32.store local.get $0 @@ -21929,33 +21885,33 @@ i32.add local.set $0 end - local.get $11 + local.get $7 i32.const 24 i32.add - local.set $11 - br $while-continue|02 + local.set $7 + br $while-continue|00 end end - local.get $3 - local.get $2 + local.get $1 + local.get $9 i32.store - local.get $3 - local.get $2 + local.get $1 + local.get $9 call $~lib/rt/itcms/__link - local.get $3 - local.get $15 + local.get $1 + local.get $5 i32.store offset=4 - local.get $3 local.get $1 + local.get $2 i32.store offset=8 - local.get $3 local.get $1 + local.get $2 call $~lib/rt/itcms/__link - local.get $3 - local.get $12 + local.get $1 + local.get $16 i32.store offset=12 - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -21964,70 +21920,70 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.load offset=8 - local.tee $15 + local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.load offset=16 - local.tee $1 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $15 - local.get $1 + local.get $0 + local.get $5 i32.const 24 i32.mul i32.add - local.tee $1 - local.get $18 - f64.store - local.get $1 - local.get $18 - f64.store offset=8 + local.tee $0 local.get $3 + f64.store + local.get $0 local.get $3 + f64.store offset=8 + local.get $1 + local.get $1 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 + local.get $0 local.get $1 - local.get $3 i32.load - local.get $13 - local.get $3 + local.get $15 + local.get $1 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=16 - local.get $2 - local.get $1 + local.get $5 + local.get $0 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - local.get $6 + local.get $11 + local.get $12 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 call $~lib/map/Map#set - local.get $9 + local.get $10 i32.const 1 i32.add - local.set $9 + local.set $10 br $for-loop|2 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 100 i32.ne @@ -22039,7 +21995,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -22052,14 +22008,14 @@ unreachable end f64.const 0 - local.set $18 + local.set $3 loop $for-loop|3 - local.get $18 + local.get $3 f64.const 50 f64.lt if - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -22070,10 +22026,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $18 + local.get $3 i32.trunc_f64_s i32.const 20 i32.add @@ -22086,11 +22042,11 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -22100,14 +22056,14 @@ call $~lib/builtins/abort unreachable end - local.get $18 + local.get $3 f64.const 1 f64.add - local.set $18 + local.set $3 br $for-loop|3 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -22120,14 +22076,14 @@ unreachable end f64.const 0 - local.set $18 + local.set $3 loop $for-loop|4 - local.get $18 + local.get $3 f64.const 50 f64.lt if - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -22137,15 +22093,15 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 - local.get $18 + local.get $4 + local.get $3 + local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -22156,11 +22112,11 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -22170,14 +22126,14 @@ call $~lib/builtins/abort unreachable end - local.get $18 + local.get $3 f64.const 1 f64.add - local.set $18 + local.set $3 br $for-loop|4 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -22189,9 +22145,9 @@ call $~lib/builtins/abort unreachable end - local.get $17 + local.get $4 call $~lib/map/Map#clear - local.get $17 + local.get $4 i32.load offset=20 if i32.const 0 diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 646c4aeba9..1dfcd2110c 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -1,20 +1,19 @@ (module (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) + (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) - (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) (type $none_=>_f64 (func (result f64))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $none_=>_none (func)) (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f32_i32_f32_=>_i32 (func (param f32 i32 f32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) + (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) (type $i64_=>_none (func (param i64))) (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) (type $f64_=>_none (func (param f64))) @@ -314,7 +313,8 @@ f64.ne return end - block $__inlined_func$std/math/ulperr + block $__inlined_func$std/math/ulperr (result f64) + f64.const 0 local.get $1 local.get $1 f64.ne @@ -323,15 +323,13 @@ local.get $0 f64.ne select - if - f64.const 0 - local.set $2 - br $__inlined_func$std/math/ulperr - end + br_if $__inlined_func$std/math/ulperr + drop local.get $0 local.get $1 f64.eq if + local.get $2 local.get $0 i64.reinterpret_f64 i64.const 63 @@ -344,8 +342,8 @@ i32.wrap_i64 i32.eq br_if $__inlined_func$std/math/ulperr + drop f64.const inf - local.set $2 br $__inlined_func$std/math/ulperr end local.get $0 @@ -386,9 +384,7 @@ call $~lib/math/NativeMath.scalbn local.get $2 f64.add - local.set $2 end - local.get $2 f64.abs f64.const 1.5 f64.ge @@ -416,7 +412,8 @@ f32.ne return end - block $__inlined_func$std/math/ulperrf + block $__inlined_func$std/math/ulperrf (result f32) + f32.const 0 local.get $1 local.get $1 f32.ne @@ -425,15 +422,13 @@ local.get $0 f32.ne select - if - f32.const 0 - local.set $2 - br $__inlined_func$std/math/ulperrf - end + br_if $__inlined_func$std/math/ulperrf + drop local.get $0 local.get $1 f32.eq if + local.get $2 local.get $0 i32.reinterpret_f32 i32.const 31 @@ -444,8 +439,8 @@ i32.shr_u i32.eq br_if $__inlined_func$std/math/ulperrf + drop f32.const inf - local.set $2 br $__inlined_func$std/math/ulperrf end local.get $0 @@ -559,9 +554,7 @@ f32.mul local.get $2 f32.add - local.set $2 end - local.get $2 f32.abs f32.const 1.5 f32.ge @@ -571,85 +564,6 @@ end i32.const 1 ) - (func $std/math/test_scalbnf (param $0 f32) (param $1 i32) (param $2 f32) (result i32) - local.get $1 - i32.const 127 - i32.gt_s - if (result f32) - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.set $0 - local.get $1 - i32.const 127 - i32.sub - local.tee $1 - i32.const 127 - i32.gt_s - if (result f32) - local.get $1 - i32.const 127 - i32.sub - local.tee $1 - i32.const 127 - local.get $1 - i32.const 127 - i32.lt_s - select - local.set $1 - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - else - local.get $0 - end - else - local.get $1 - i32.const -126 - i32.lt_s - if (result f32) - local.get $0 - f32.const 1.9721522630525295e-31 - f32.mul - local.set $0 - local.get $1 - i32.const 102 - i32.add - local.tee $1 - i32.const -126 - i32.lt_s - if (result f32) - local.get $1 - i32.const 102 - i32.add - local.tee $1 - i32.const -126 - local.get $1 - i32.const -126 - i32.gt_s - select - local.set $1 - local.get $0 - f32.const 1.9721522630525295e-31 - f32.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i32.const 127 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - f32.mul - local.get $2 - f32.const 0 - call $std/math/check - ) (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) (local $1 f64) (local $2 i32) @@ -896,136 +810,61 @@ local.get $0 f64.add ) - (func $std/math/test_acosf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) + (local $1 f32) + (local $2 i32) (local $3 f32) (local $4 i32) - (local $5 i32) - (local $6 f32) - block $__inlined_func$~lib/math/NativeMathf.acos (result f32) - local.get $0 - i32.reinterpret_f32 - local.tee $5 - i32.const 2147483647 - i32.and - local.tee $4 + (local $5 f32) + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1065353216 + i32.ge_u + if + local.get $2 i32.const 1065353216 - i32.ge_u + i32.eq if local.get $4 - i32.const 1065353216 - i32.eq + i32.const 31 + i32.shr_u if f32.const 3.141592502593994 - local.get $5 - i32.const 31 - i32.shr_u - br_if $__inlined_func$~lib/math/NativeMathf.acos - drop - f32.const 0 - br $__inlined_func$~lib/math/NativeMathf.acos + return end f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - br $__inlined_func$~lib/math/NativeMathf.acos - end - local.get $4 - i32.const 1056964608 - i32.lt_u - if - f32.const 1.570796251296997 - local.get $4 - i32.const 847249408 - i32.le_u - br_if $__inlined_func$~lib/math/NativeMathf.acos - drop - f32.const 1.570796251296997 - local.get $0 - f32.const 7.549789415861596e-08 - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - local.get $0 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - f32.mul - f32.sub - f32.sub - f32.sub - br $__inlined_func$~lib/math/NativeMathf.acos + return end - local.get $5 - i32.const 31 - i32.shr_u + f32.const 0 + local.get $0 + local.get $0 + f32.sub + f32.div + return + end + local.get $2 + i32.const 1056964608 + i32.lt_u + if + local.get $2 + i32.const 847249408 + i32.le_u if f32.const 1.570796251296997 - local.get $0 - f32.const 0.5 - f32.mul - f32.const 0.5 - f32.add - local.tee $0 - f32.sqrt - local.tee $3 - local.get $0 - local.get $0 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - local.get $3 - f32.mul - f32.const 7.549789415861596e-08 - f32.sub - f32.add - f32.sub - local.tee $0 - local.get $0 - f32.add - br $__inlined_func$~lib/math/NativeMathf.acos + return end - f32.const 0.5 + f32.const 1.570796251296997 + local.get $0 + f32.const 7.549789415861596e-08 + local.get $0 + local.get $0 local.get $0 - f32.const 0.5 f32.mul - f32.sub local.tee $0 - f32.sqrt - local.tee $6 - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $3 - local.get $0 local.get $0 local.get $0 f32.const -0.008656363002955914 @@ -1042,26 +881,98 @@ f32.const 1 f32.add f32.div - local.get $6 f32.mul + f32.sub + f32.sub + f32.sub + return + end + local.get $4 + i32.const 31 + i32.shr_u + if + f32.const 1.570796251296997 local.get $0 - local.get $3 - local.get $3 + f32.const 0.5 f32.mul - f32.sub - local.get $6 - local.get $3 + f32.const 0.5 f32.add - f32.div + local.tee $0 + f32.sqrt + local.tee $1 + local.get $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 f32.add + f32.mul + f32.const 0.16666586697101593 f32.add - local.tee $0 + f32.mul local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 f32.add + f32.div + local.get $1 + f32.mul + f32.const 7.549789415861596e-08 + f32.sub + f32.add + f32.sub + f32.const 2 + f32.mul + return end + f32.const 0.5 + local.get $0 + f32.const 0.5 + f32.mul + f32.sub + local.tee $1 + f32.sqrt + local.tee $5 + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $3 local.get $1 - local.get $2 - call $std/math/check + local.tee $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + local.get $5 + f32.mul + local.get $0 + local.get $3 + local.get $3 + f32.mul + f32.sub + local.get $5 + local.get $3 + f32.add + f32.div + f32.add + f32.add + f32.const 2 + f32.mul ) (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) (local $1 f64) @@ -1341,11 +1252,11 @@ f64.mul f64.const -0.5 f64.mul - local.tee $3 - f64.add local.tee $5 + f64.add + local.tee $3 f64.sub - local.get $3 + local.get $5 f64.add local.get $0 local.get $2 @@ -1358,7 +1269,7 @@ f64.mul f64.add f64.add - local.get $5 + local.get $3 f64.add br $~lib/util/math/log_lut|inlined.0 end @@ -1426,23 +1337,23 @@ i32.wrap_i64 i32.const 4 i32.shl - local.tee $7 + local.tee $4 i32.const 3136 i32.add - local.set $4 + local.set $7 local.get $1 local.get $6 i64.const -4503599627370496 i64.and i64.sub f64.reinterpret_i64 - local.get $4 + local.get $7 f64.load f64.sub - local.get $4 + local.get $7 f64.load offset=8 f64.sub - local.get $7 + local.get $4 i32.const 1088 i32.add local.tee $4 @@ -1459,12 +1370,12 @@ local.get $4 f64.load offset=8 f64.add - local.tee $5 + local.tee $2 local.get $0 f64.add - local.set $2 - local.get $5 + local.set $5 local.get $2 + local.get $5 f64.sub local.get $0 f64.add @@ -1475,19 +1386,19 @@ local.get $0 local.get $0 f64.mul - local.tee $3 + local.tee $2 f64.const -0.5000000000000001 f64.mul f64.add local.get $0 - local.get $3 + local.get $2 f64.mul local.get $0 f64.const -0.2499999999622955 f64.mul f64.const 0.33333333331825593 f64.add - local.get $3 + local.get $2 local.get $0 f64.const -0.16667054827627667 f64.mul @@ -1497,7 +1408,7 @@ f64.add f64.mul f64.add - local.get $2 + local.get $5 f64.add end ) @@ -1506,13 +1417,15 @@ (local $4 i64) block $__inlined_func$~lib/math/NativeMath.acosh (result f64) local.get $0 - local.get $0 + local.tee $3 + i64.reinterpret_f64 + local.set $4 + local.get $3 + local.get $3 f64.sub f64.const 0 f64.div - local.get $0 - i64.reinterpret_f64 - local.tee $4 + local.get $4 i64.const 4607182418800017408 i64.lt_s br_if $__inlined_func$~lib/math/NativeMath.acosh @@ -1526,7 +1439,7 @@ i64.const 1024 i64.lt_u if - local.get $0 + local.get $3 f64.const 1 f64.sub local.tee $3 @@ -1546,13 +1459,13 @@ i64.const 1049 i64.lt_u if - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.add f64.const 1 - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 + local.get $3 f64.mul f64.const 1 f64.sub @@ -1563,7 +1476,7 @@ call $~lib/math/NativeMath.log br $__inlined_func$~lib/math/NativeMath.acosh end - local.get $0 + local.get $3 call $~lib/math/NativeMath.log f64.const 0.6931471805599453 f64.add @@ -1703,29 +1616,29 @@ f32.const 2 f32.add f32.div - local.tee $4 - local.get $4 + local.tee $0 + local.get $0 f32.mul local.tee $6 local.get $6 f32.mul - local.set $0 - local.get $4 + local.set $4 + local.get $0 local.get $1 f32.const 0.5 f32.mul local.get $1 f32.mul - local.tee $4 + local.tee $0 local.get $6 - local.get $0 + local.get $4 f32.const 0.2849878668785095 f32.mul f32.const 0.6666666269302368 f32.add f32.mul - local.get $0 - local.get $0 + local.get $4 + local.get $4 f32.const 0.24279078841209412 f32.mul f32.const 0.40000972151756287 @@ -1736,17 +1649,17 @@ f32.mul local.get $3 f32.convert_i32_s - local.tee $0 + local.tee $4 f32.const 9.05800061445916e-06 f32.mul local.get $5 f32.add f32.add - local.get $4 + local.get $0 f32.sub local.get $1 f32.add - local.get $0 + local.get $4 f32.const 0.6931381225585938 f32.mul f32.add @@ -1755,9 +1668,9 @@ (local $1 i32) (local $2 f64) (local $3 i32) - (local $4 f64) - (local $5 f32) - (local $6 i32) + (local $4 i32) + (local $5 f64) + (local $6 f32) block $~lib/util/math/logf_lut|inlined.0 (result f32) local.get $0 i32.reinterpret_f32 @@ -1783,8 +1696,8 @@ local.get $0 local.get $0 f32.sub - local.tee $5 - local.get $5 + local.tee $6 + local.get $6 f32.div i32.const 1 local.get $1 @@ -1814,7 +1727,11 @@ i32.shr_u i32.const 15 i32.and - local.set $6 + i32.const 4 + i32.shl + i32.const 5184 + i32.add + local.set $4 local.get $1 local.get $3 i32.const -8388608 @@ -1822,12 +1739,7 @@ i32.sub f32.reinterpret_i32 f64.promote_f32 - local.get $6 - i32.const 4 - i32.shl - i32.const 5184 - i32.add - local.tee $1 + local.get $4 f64.load f64.mul f64.const 1 @@ -1835,19 +1747,19 @@ local.tee $2 local.get $2 f64.mul - local.set $4 + local.set $5 local.get $2 f64.const 0.333456765744066 f64.mul f64.const -0.4999997485802103 f64.add - local.get $4 + local.get $5 f64.const -0.25089342214237154 f64.mul f64.add - local.get $4 + local.get $5 f64.mul - local.get $1 + local.get $4 f64.load offset=8 local.get $3 i32.const 23 @@ -2136,94 +2048,60 @@ end local.get $0 ) - (func $std/math/test_asinf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - (local $4 f32) - (local $5 f64) - block $__inlined_func$~lib/math/NativeMathf.asin - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 + (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) + (local $1 i32) + (local $2 f32) + (local $3 f64) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1065353216 + i32.ge_u + if + local.get $1 i32.const 1065353216 - i32.ge_u + i32.eq if - local.get $3 - i32.const 1065353216 - i32.eq - if - local.get $0 - f32.const 1.5707963705062866 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.asin - end - f32.const 0 - local.get $0 local.get $0 - f32.sub - f32.div - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.asin + f32.const 1.5707963705062866 + f32.mul + f32.const 7.52316384526264e-37 + f32.add + return end - local.get $3 - i32.const 1056964608 + f32.const 0 + local.get $0 + local.get $0 + f32.sub + f32.div + return + end + local.get $1 + i32.const 1056964608 + i32.lt_u + if + local.get $1 + i32.const 8388608 + i32.ge_u + i32.const 0 + local.get $1 + i32.const 964689920 i32.lt_u + select if - local.get $3 - i32.const 8388608 - i32.ge_u - i32.const 0 - local.get $3 - i32.const 964689920 - i32.lt_u - select - br_if $__inlined_func$~lib/math/NativeMathf.asin - local.get $0 - local.get $0 - local.get $0 local.get $0 - f32.mul - local.tee $0 - local.get $0 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - f32.mul - f32.add - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.asin + return end - f64.const 1.5707963705062866 - f32.const 0.5 local.get $0 - f32.abs - f32.const 0.5 + local.get $0 + local.get $0 + local.get $0 f32.mul - f32.sub - local.tee $4 - f64.promote_f32 - f64.sqrt - local.tee $5 - local.get $5 - local.get $4 - local.get $4 - local.get $4 + local.tee $0 + local.get $0 + local.get $0 f32.const -0.008656363002955914 f32.mul f32.const -0.04274342209100723 @@ -2232,50 +2110,77 @@ f32.const 0.16666586697101593 f32.add f32.mul - local.get $4 + local.get $0 f32.const -0.7066296339035034 f32.mul f32.const 1 f32.add f32.div - f64.promote_f32 - f64.mul - f64.add - local.tee $5 - local.get $5 - f64.add - f64.sub - f32.demote_f64 - local.get $0 - f32.copysign - local.set $0 + f32.mul + f32.add + return end + f64.const 1.5707963705062866 + f32.const 0.5 local.get $0 - local.get $1 + f32.abs + f32.const 0.5 + f32.mul + f32.sub + local.tee $2 + f64.promote_f32 + f64.sqrt + local.tee $3 + local.get $3 local.get $2 - call $std/math/check + local.get $2 + local.get $2 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $2 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + f64.promote_f32 + f64.mul + f64.add + f64.const 2 + f64.mul + f64.sub + f32.demote_f64 + local.get $0 + f32.copysign ) (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) (local $4 i64) + (local $5 i64) local.get $0 - local.tee $3 i64.reinterpret_f64 - local.tee $4 - i64.const 9223372036854775807 - i64.and - f64.reinterpret_i64 - local.set $0 - local.get $4 + local.tee $5 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $4 + local.set $4 + local.get $5 + i64.const 9223372036854775807 + i64.and + f64.reinterpret_i64 + local.set $3 + local.get $4 i64.const 1049 i64.ge_u if (result f64) - local.get $0 + local.get $3 call $~lib/math/NativeMath.log f64.const 0.6931471805599453 f64.add @@ -2284,17 +2189,17 @@ i64.const 1024 i64.ge_u if (result f64) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.add f64.const 1 - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.mul f64.const 1 f64.add f64.sqrt - local.get $0 + local.get $3 f64.add f64.div f64.add @@ -2304,12 +2209,12 @@ i64.const 997 i64.ge_u if (result f64) - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 + local.get $3 f64.mul - local.tee $0 - local.get $0 + local.tee $3 + local.get $3 f64.const 1 f64.add f64.sqrt @@ -2319,17 +2224,17 @@ f64.add call $~lib/math/NativeMath.log1p else - local.get $0 + local.get $3 end end end - local.get $3 + local.get $0 f64.copysign local.get $1 local.get $2 call $std/math/check if (result i32) - local.get $3 + local.get $0 call $~lib/bindings/Math/asinh local.get $1 local.get $2 @@ -2822,10 +2727,9 @@ (local $4 i64) (local $5 f64) local.get $0 - local.tee $3 f64.abs - local.set $0 - local.get $3 + local.set $3 + local.get $0 i64.reinterpret_f64 i64.const 52 i64.shr_u @@ -2839,15 +2743,15 @@ i64.const 991 i64.ge_u if (result f64) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.add local.tee $5 local.get $5 - local.get $0 + local.get $3 f64.mul f64.const 1 - local.get $0 + local.get $3 f64.sub f64.div f64.add @@ -2855,28 +2759,27 @@ f64.const 0.5 f64.mul else - local.get $0 + local.get $3 end else - local.get $0 + local.get $3 f64.const 1 - local.get $0 + local.get $3 f64.sub f64.div - local.tee $0 - local.get $0 - f64.add + f64.const 2 + f64.mul call $~lib/math/NativeMath.log1p f64.const 0.5 f64.mul end - local.get $3 + local.get $0 f64.copysign local.get $1 local.get $2 call $std/math/check if (result i32) - local.get $3 + local.get $0 call $~lib/bindings/Math/atanh local.get $1 local.get $2 @@ -2924,9 +2827,8 @@ local.get $3 f32.sub f32.div - local.tee $3 - local.get $3 - f32.add + f32.const 2 + f32.mul call $~lib/math/NativeMathf.log1p f32.const 0.5 f32.mul @@ -2976,13 +2878,14 @@ local.get $4 i64.reinterpret_f64 local.tee $8 - i32.wrap_i64 - local.tee $10 - local.get $8 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $7 + local.set $5 + local.get $8 + i32.wrap_i64 + local.tee $10 + local.get $5 i32.const 1072693248 i32.sub i32.or @@ -2993,7 +2896,7 @@ local.set $1 br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $7 + local.get $5 i32.const 30 i32.shr_u i32.const 2 @@ -3002,11 +2905,11 @@ i32.const 31 i32.shr_u i32.or - local.set $5 - local.get $7 + local.set $7 + local.get $5 i32.const 2147483647 i32.and - local.set $7 + local.set $5 local.get $6 i32.const 2147483647 i32.and @@ -3017,16 +2920,8 @@ block $break|0 block $case3|0 block $case2|0 - local.get $5 - i32.eqz - br_if $__inlined_func$~lib/math/NativeMath.atan2 - block $tablify|0 - local.get $5 - i32.const 1 - i32.sub - br_table $__inlined_func$~lib/math/NativeMath.atan2 $case2|0 $case3|0 $tablify|0 - end - br $break|0 + local.get $7 + br_table $__inlined_func$~lib/math/NativeMath.atan2 $__inlined_func$~lib/math/NativeMath.atan2 $case2|0 $case3|0 $break|0 end f64.const 3.141592653589793 local.set $1 @@ -3038,12 +2933,12 @@ end end block $folding-inner0 - local.get $7 + local.get $5 local.get $10 i32.or i32.eqz br_if $folding-inner0 - local.get $7 + local.get $5 i32.const 2146435072 i32.eq if @@ -3053,14 +2948,14 @@ if (result f64) f64.const 2.356194490192345 f64.const 0.7853981633974483 - local.get $5 + local.get $7 i32.const 2 i32.and select else f64.const 3.141592653589793 f64.const 0 - local.get $5 + local.get $7 i32.const 2 i32.and select @@ -3068,7 +2963,7 @@ local.tee $1 f64.neg local.get $1 - local.get $5 + local.get $7 i32.const 1 i32.and select @@ -3080,19 +2975,19 @@ i32.const 2146435072 i32.eq local.get $6 - local.get $7 + local.get $5 i32.const 67108864 i32.add i32.gt_u select br_if $folding-inner0 - local.get $7 + local.get $5 local.get $6 i32.const 67108864 i32.add i32.gt_u i32.const 0 - local.get $5 + local.get $7 i32.const 2 i32.and select @@ -3110,12 +3005,9 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $5 - if - local.get $5 - i32.const 1 - i32.sub - br_table $case1|1 $case2|1 $case3|1 $break|1 + block $case0|1 + local.get $7 + br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 end br $__inlined_func$~lib/math/NativeMath.atan2 end @@ -3144,7 +3036,7 @@ end f64.const -1.5707963267948966 f64.const 1.5707963267948966 - local.get $5 + local.get $7 i32.const 1 i32.and select @@ -3165,11 +3057,11 @@ i32.const 0 end ) - (func $std/math/test_atan2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) + (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $__inlined_func$~lib/math/NativeMathf.atan2 + block $folding-inner0 i32.const 1 local.get $0 local.get $0 @@ -3182,144 +3074,117 @@ local.get $1 local.get $0 f32.add - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end local.get $0 i32.reinterpret_f32 - local.set $5 + local.set $3 local.get $1 i32.reinterpret_f32 - local.tee $6 + local.tee $4 i32.const 1065353216 i32.eq if local.get $0 call $~lib/math/NativeMathf.atan - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end - local.get $6 + local.get $4 i32.const 30 i32.shr_u i32.const 2 i32.and - local.get $5 + local.get $3 i32.const 31 i32.shr_u i32.or - local.set $4 - local.get $6 + local.set $2 + local.get $4 i32.const 2147483647 i32.and - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 2147483647 i32.and - local.tee $5 + local.tee $3 i32.eqz if block $break|0 block $case3|0 block $case2|0 - local.get $4 - i32.eqz - br_if $__inlined_func$~lib/math/NativeMathf.atan2 - block $tablify|0 - local.get $4 - i32.const 1 - i32.sub - br_table $__inlined_func$~lib/math/NativeMathf.atan2 $case2|0 $case3|0 $tablify|0 + block $case1|0 + local.get $2 + br_table $case1|0 $case1|0 $case2|0 $case3|0 $break|0 end - br $break|0 + local.get $0 + return end f32.const 3.1415927410125732 - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end f32.const -3.1415927410125732 - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end end - local.get $6 + local.get $4 i32.eqz - if - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $4 - i32.const 1 - i32.and - select - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 - end - local.get $6 + br_if $folding-inner0 + local.get $4 i32.const 2139095040 i32.eq if - local.get $5 + local.get $3 i32.const 2139095040 i32.eq if (result f32) f32.const 2.356194496154785 f32.const 0.7853981852531433 - local.get $4 + local.get $2 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $4 + local.get $2 i32.const 1 i32.and select else f32.const 3.1415927410125732 f32.const 0 - local.get $4 + local.get $2 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $4 + local.get $2 i32.const 1 i32.and select end - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end i32.const 1 - local.get $5 + local.get $3 i32.const 2139095040 i32.eq - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 218103808 i32.add i32.gt_u select - if - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $4 - i32.const 1 - i32.and - select - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 - end - local.get $6 - local.get $5 + br_if $folding-inner0 + local.get $4 + local.get $3 i32.const 218103808 i32.add i32.gt_u i32.const 0 - local.get $4 + local.get $2 i32.const 2 i32.and select @@ -3337,179 +3202,160 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - br_table $case1|1 $case2|1 $case3|1 $break|1 + block $case0|1 + local.get $2 + br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 end - br $__inlined_func$~lib/math/NativeMathf.atan2 + local.get $0 + return end local.get $0 f32.neg - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end f32.const 3.1415927410125732 local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.sub - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.const 3.1415927410125732 f32.sub - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end unreachable end - local.get $0 + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 local.get $2 - local.get $3 - call $std/math/check + i32.const 1 + i32.and + select ) - (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 f64) - (local $7 i64) - block $__inlined_func$~lib/math/NativeMath.cbrt + (local $4 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 2146435072 + i32.ge_u + if local.get $0 - local.tee $3 + local.get $0 + f64.add + return + end + local.get $2 + i32.const 1048576 + i32.lt_u + if (result i32) + local.get $0 + f64.const 18014398509481984 + f64.mul i64.reinterpret_f64 - local.tee $7 + local.tee $4 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 - i32.const 2146435072 - i32.ge_u + local.tee $2 + i32.eqz if - local.get $3 - local.get $3 - f64.add - local.set $3 - br $__inlined_func$~lib/math/NativeMath.cbrt - end - local.get $5 - i32.const 1048576 - i32.lt_u - if (result i32) - local.get $3 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $7 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $5 - i32.eqz - br_if $__inlined_func$~lib/math/NativeMath.cbrt - local.get $5 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - else - local.get $5 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add + local.get $0 + return end - local.set $5 - local.get $7 - i64.const -9223372036854775808 - i64.and - local.get $5 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $6 - local.get $6 - f64.mul - local.get $6 - local.get $3 - f64.div - f64.mul - local.set $4 - local.get $3 - local.get $6 - local.get $4 - local.get $4 - f64.const 1.6214297201053545 - f64.mul - f64.const -1.8849797954337717 - f64.add - f64.mul - f64.const 1.87595182427177 - f64.add - local.get $4 - local.get $4 - f64.mul - local.get $4 - f64.mul - local.get $4 - f64.const 0.14599619288661245 - f64.mul - f64.const -0.758397934778766 - f64.add - f64.mul - f64.add - f64.mul - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.tee $3 - local.get $3 - f64.mul - f64.div - local.set $4 - local.get $3 - local.get $3 - local.get $4 - local.get $3 - f64.sub - local.get $3 - local.get $3 - f64.add - local.get $4 - f64.add - f64.div - f64.mul - f64.add - local.set $3 - end - local.get $3 - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/cbrt - local.get $1 local.get $2 - call $std/math/check + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add else - i32.const 0 + local.get $2 + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add end + local.set $2 + local.get $4 + i64.const -9223372036854775808 + i64.and + local.get $2 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + local.tee $3 + local.get $3 + f64.mul + local.get $3 + local.get $0 + f64.div + f64.mul + local.set $1 + local.get $0 + local.get $3 + local.get $1 + local.get $1 + f64.const 1.6214297201053545 + f64.mul + f64.const -1.8849797954337717 + f64.add + f64.mul + f64.const 1.87595182427177 + f64.add + local.get $1 + local.get $1 + f64.mul + local.get $1 + f64.mul + local.get $1 + f64.const 0.14599619288661245 + f64.mul + f64.const -0.758397934778766 + f64.add + f64.mul + f64.add + f64.mul + i64.reinterpret_f64 + i64.const 2147483648 + i64.add + i64.const -1073741824 + i64.and + f64.reinterpret_i64 + local.tee $1 + local.get $1 + f64.mul + f64.div + local.set $0 + local.get $1 + local.get $1 + local.get $0 + local.get $1 + f64.sub + local.get $1 + local.get $1 + f64.add + local.get $0 + f64.add + f64.div + f64.mul + f64.add ) (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 f64) @@ -3518,7 +3364,10 @@ (local $6 f64) (local $7 i32) (local $8 f64) - block $__inlined_func$~lib/math/NativeMathf.cbrt + block $__inlined_func$~lib/math/NativeMathf.cbrt (result f32) + local.get $0 + local.get $0 + f32.add local.get $0 i32.reinterpret_f32 local.tee $7 @@ -3527,20 +3376,17 @@ local.tee $5 i32.const 2139095040 i32.ge_u - if - local.get $0 - local.get $0 - f32.add - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.cbrt - end + br_if $__inlined_func$~lib/math/NativeMathf.cbrt + drop local.get $5 i32.const 8388608 i32.lt_u if (result i32) + local.get $0 local.get $5 i32.eqz br_if $__inlined_func$~lib/math/NativeMathf.cbrt + drop local.get $0 f32.const 16777216 f32.mul @@ -3574,40 +3420,38 @@ local.get $3 local.get $0 f64.promote_f32 - local.tee $3 - local.get $3 + local.tee $6 + local.get $6 f64.add local.tee $8 local.get $4 f64.add f64.mul - local.get $3 + local.get $6 local.get $4 f64.add local.get $4 f64.add f64.div - local.tee $4 - local.get $4 + local.tee $3 + local.get $3 f64.mul - local.get $4 + local.get $3 f64.mul - local.set $6 - local.get $4 + local.set $4 + local.get $3 local.get $8 - local.get $6 + local.get $4 f64.add f64.mul - local.get $3 local.get $6 + local.get $4 f64.add - local.get $6 + local.get $4 f64.add f64.div f32.demote_f64 - local.set $0 end - local.get $0 local.get $1 local.get $2 call $std/math/check @@ -3619,8 +3463,8 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i32) - (local $8 i64) + (local $7 i64) + (local $8 i32) (local $9 i64) (local $10 i64) (local $11 i64) @@ -3632,7 +3476,7 @@ i64.shr_u i64.const 1045 i64.sub - local.tee $4 + local.tee $2 i64.const 6 i64.shr_s i32.wrap_i64 @@ -3640,175 +3484,174 @@ i32.shl i32.const 5440 i32.add - local.tee $7 + local.tee $8 i64.load - local.set $6 - local.get $7 + local.set $5 + local.get $8 i64.load offset=8 local.set $3 - local.get $7 + local.get $8 i64.load offset=16 local.set $1 - local.get $4 + local.get $2 i64.const 63 i64.and - local.tee $4 + local.tee $2 i64.const 0 i64.ne if - local.get $6 - local.get $4 + local.get $5 + local.get $2 i64.shl local.get $3 i64.const 64 - local.get $4 + local.get $2 i64.sub - local.tee $2 + local.tee $4 i64.shr_u i64.or - local.set $6 + local.set $5 local.get $3 - local.get $4 + local.get $2 i64.shl local.get $1 - local.get $2 + local.get $4 i64.shr_u i64.or local.set $3 local.get $1 - local.get $4 + local.get $2 i64.shl - local.get $7 + local.get $8 i64.load offset=24 - local.get $2 + local.get $4 i64.shr_u i64.or local.set $1 end + local.get $3 + i64.const 4294967295 + i64.and + local.tee $6 local.get $0 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or - local.tee $4 + local.tee $2 i64.const 4294967295 i64.and - local.tee $2 - local.get $3 + local.tee $7 + i64.mul + local.set $4 + local.get $6 + local.get $2 i64.const 32 i64.shr_u - local.tee $8 + local.tee $6 i64.mul + local.get $7 local.get $3 - i64.const 4294967295 - i64.and - local.tee $5 - local.get $2 - i64.mul - local.tee $9 i64.const 32 i64.shr_u - i64.add - local.set $3 - local.get $5 + local.tee $7 + i64.mul local.get $4 i64.const 32 i64.shr_u - local.tee $5 - i64.mul - local.get $3 + i64.add + local.tee $9 i64.const 4294967295 i64.and i64.add - local.set $2 - local.get $5 - local.get $8 + local.set $3 + local.get $6 + local.get $7 i64.mul - local.get $3 + local.get $9 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $3 i64.const 32 i64.shr_u i64.add global.set $~lib/math/res128_hi - local.get $4 + global.get $~lib/math/res128_hi + local.get $2 + local.get $5 + i64.mul + i64.add + local.get $2 i64.const 32 i64.shr_s local.get $1 i64.const 32 i64.shr_u i64.mul - local.tee $3 - local.get $9 + local.tee $1 + local.get $4 i64.const 4294967295 i64.and - local.get $2 + local.get $3 i64.const 32 i64.shl i64.add i64.add - local.set $1 + local.tee $5 local.get $1 - local.get $3 i64.lt_u i64.extend_i32_u - global.get $~lib/math/res128_hi - local.get $4 - local.get $6 - i64.mul i64.add - i64.add - local.tee $8 + local.tee $7 i64.const 2 i64.shl - local.get $1 + local.get $5 i64.const 62 i64.shr_u i64.or - local.tee $6 + local.tee $2 i64.const 63 i64.shr_s - local.tee $4 + local.tee $1 i64.const 1 i64.shr_s - local.get $6 + local.get $2 i64.xor - local.tee $2 + local.tee $4 i64.clz local.set $3 - local.get $2 + local.get $4 local.get $3 i64.shl - local.get $4 local.get $1 + local.get $5 i64.const 2 i64.shl i64.xor - local.tee $5 + local.tee $9 i64.const 64 local.get $3 i64.sub i64.shr_u i64.or - local.tee $1 + local.tee $5 i64.const 4294967295 i64.and - local.set $2 - local.get $1 + local.tee $6 + i64.const 560513588 + i64.mul + local.set $4 + local.get $5 i64.const 32 i64.shr_u - local.tee $9 + local.tee $10 i64.const 560513588 i64.mul - local.get $2 + local.get $6 i64.const 3373259426 i64.mul - local.get $2 - i64.const 560513588 - i64.mul - local.tee $10 + local.get $4 i64.const 32 i64.shr_u i64.add @@ -3816,32 +3659,32 @@ i64.const 4294967295 i64.and i64.add - local.set $2 - local.get $9 + local.set $6 + local.get $10 i64.const 3373259426 i64.mul local.get $11 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $6 i64.const 32 i64.shr_u i64.add global.set $~lib/math/res128_hi - local.get $10 + local.get $4 i64.const 4294967295 i64.and - local.get $2 + local.get $6 i64.const 32 i64.shl i64.add - local.tee $2 - local.get $1 + local.tee $4 + local.get $5 f64.convert_i64_u f64.const 3.753184150245214e-04 f64.mul - local.get $5 + local.get $9 local.get $3 i64.shl f64.convert_i64_u @@ -3849,21 +3692,21 @@ f64.mul f64.add i64.trunc_f64_u - local.tee $1 + local.tee $5 i64.lt_u i64.extend_i32_u global.get $~lib/math/res128_hi - local.tee $5 + local.tee $10 i64.const 11 i64.shr_u i64.add f64.convert_i64_u global.set $~lib/math/rempio2_y0 - local.get $1 local.get $5 + local.get $10 i64.const 53 i64.shl - local.get $2 + local.get $4 i64.const 11 i64.shr_u i64.or @@ -3879,7 +3722,7 @@ i64.shl i64.sub local.get $0 - local.get $6 + local.get $2 i64.xor i64.const -9223372036854775808 i64.and @@ -3892,10 +3735,10 @@ local.get $12 f64.mul global.set $~lib/math/rempio2_y1 - local.get $8 + local.get $7 i64.const 62 i64.shr_s - local.get $4 + local.get $1 i64.sub i32.wrap_i64 ) @@ -3908,6 +3751,7 @@ (local $6 i32) (local $7 i32) (local $8 f64) + (local $9 f64) local.get $0 i64.reinterpret_f64 local.tee $2 @@ -3932,20 +3776,24 @@ f64.const 1 return end - f64.const 1 local.get $0 local.get $0 f64.mul local.tee $3 + local.get $3 + f64.mul + local.set $4 + f64.const 1 + local.get $3 f64.const 0.5 f64.mul - local.tee $4 - f64.sub local.tee $1 + f64.sub + local.tee $8 f64.const 1 - local.get $1 + local.get $8 f64.sub - local.get $4 + local.get $1 f64.sub local.get $3 local.get $3 @@ -3959,10 +3807,7 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $3 - local.get $3 - f64.mul - local.tee $4 + local.get $4 local.get $4 f64.mul local.get $3 @@ -4012,15 +3857,15 @@ local.get $0 f64.const 1.5707963267341256 f64.add - local.set $0 + local.set $3 i32.const -1 local.set $5 local.get $7 i32.const 1073291771 i32.ne if (result f64) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -4028,7 +3873,7 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $0 + local.get $3 f64.const 6.077100506303966e-11 f64.add local.tee $3 @@ -4045,13 +3890,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $0 + local.set $3 local.get $7 i32.const 1073291771 i32.ne if (result f64) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -4059,7 +3904,7 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $0 + local.get $3 f64.const 6.077100506303966e-11 f64.sub local.tee $3 @@ -4092,15 +3937,15 @@ f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $3 + local.tee $4 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $3 + local.get $4 f64.const 6.077100506506192e-11 f64.mul - local.tee $4 + local.tee $3 f64.sub local.tee $1 i64.reinterpret_f64 @@ -4115,25 +3960,25 @@ i32.const 16 i32.gt_u if - local.get $3 + local.get $4 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $3 + local.get $4 f64.const 6.077100506303966e-11 f64.mul - local.tee $4 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $4 + local.get $1 f64.sub f64.sub - local.set $4 + local.set $3 local.get $6 local.get $0 - local.get $4 + local.get $3 f64.sub local.tee $1 i64.reinterpret_f64 @@ -4148,24 +3993,24 @@ i32.const 49 i32.gt_u if (result f64) - local.get $3 + local.get $4 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $3 + local.get $4 f64.const 2.0222662487111665e-21 f64.mul - local.tee $4 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $4 + local.get $1 f64.sub f64.sub - local.set $4 + local.set $3 local.get $0 - local.get $4 + local.get $3 f64.sub else local.get $1 @@ -4177,10 +4022,10 @@ local.get $0 local.get $1 f64.sub - local.get $4 + local.get $3 f64.sub global.set $~lib/math/rempio2_y1 - local.get $3 + local.get $4 i32.trunc_f64_s br $~lib/math/rempio2|inlined.0 end @@ -4247,20 +4092,24 @@ f64.sub f64.sub else - f64.const 1 local.get $3 local.get $3 f64.mul local.tee $0 + local.get $0 + f64.mul + local.set $1 + f64.const 1 + local.get $0 f64.const 0.5 f64.mul - local.tee $1 - f64.sub local.tee $8 + f64.sub + local.tee $9 f64.const 1 - local.get $8 + local.get $9 f64.sub - local.get $1 + local.get $8 f64.sub local.get $0 local.get $0 @@ -4274,10 +4123,7 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $1 + local.get $1 local.get $1 f64.mul local.get $0 @@ -4313,30 +4159,27 @@ (local $1 i32) (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 f64) - (local $11 f64) - (local $12 f64) + (local $7 f64) + (local $8 f64) + (local $9 f64) block $folding-inner0 local.get $0 i32.reinterpret_f32 - local.tee $2 + local.tee $1 i32.const 31 i32.shr_u - local.set $9 - local.get $2 + local.set $5 + local.get $1 i32.const 2147483647 i32.and - local.tee $1 + local.tee $2 i32.const 1061752794 i32.le_u if - local.get $1 + local.get $2 i32.const 964689920 i32.lt_u if @@ -4345,53 +4188,53 @@ end local.get $0 f64.promote_f32 - local.tee $12 - local.get $12 + local.tee $9 + local.get $9 f64.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f64.mul - local.set $12 + local.set $8 br $folding-inner0 end - local.get $1 + local.get $2 i32.const 1081824209 i32.le_u if - local.get $1 + local.get $2 i32.const 1075235811 i32.gt_u if local.get $0 f64.promote_f32 - local.tee $12 + local.tee $9 f64.const 3.141592653589793 f64.add - local.get $12 + local.get $9 f64.const 3.141592653589793 f64.sub - local.get $9 + local.get $5 select - local.tee $12 - local.get $12 + local.tee $9 + local.get $9 f64.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f64.mul - local.set $12 - local.get $11 + local.set $8 + local.get $9 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $12 + local.get $8 f64.const 0.04166662332373906 f64.mul f64.add - local.get $12 - local.get $11 + local.get $8 + local.get $9 f64.mul - local.get $11 + local.get $9 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4402,46 +4245,46 @@ f32.neg return else - local.get $9 + local.get $5 if (result f64) local.get $0 f64.promote_f32 f64.const 1.5707963267948966 f64.add - local.tee $11 - local.get $11 + local.tee $8 + local.get $8 f64.mul - local.tee $10 - local.get $11 + local.tee $9 + local.get $8 f64.mul else f64.const 1.5707963267948966 local.get $0 f64.promote_f32 f64.sub - local.tee $11 - local.get $11 + local.tee $8 + local.get $8 f64.mul - local.tee $10 - local.get $11 + local.tee $9 + local.get $8 f64.mul end - local.set $12 - local.get $11 - local.get $12 - local.get $10 + local.set $7 + local.get $8 + local.get $7 + local.get $9 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $12 - local.get $10 - local.get $10 + local.get $7 + local.get $9 + local.get $9 f64.mul f64.mul - local.get $10 + local.get $9 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4453,74 +4296,74 @@ end unreachable end - local.get $1 + local.get $2 i32.const 1088565717 i32.le_u if - local.get $1 + local.get $2 i32.const 1085271519 i32.gt_u if local.get $0 f64.promote_f32 - local.tee $12 + local.tee $9 f64.const 6.283185307179586 f64.add - local.get $12 + local.get $9 f64.const 6.283185307179586 f64.sub - local.get $9 + local.get $5 select - local.tee $12 - local.get $12 + local.tee $9 + local.get $9 f64.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f64.mul - local.set $12 + local.set $8 br $folding-inner0 else - local.get $9 + local.get $5 if (result f64) local.get $0 f32.neg f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $11 - local.get $11 + local.tee $8 + local.get $8 f64.mul - local.tee $10 - local.get $11 + local.tee $9 + local.get $8 f64.mul else local.get $0 f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $11 - local.get $11 + local.tee $8 + local.get $8 f64.mul - local.tee $10 - local.get $11 + local.tee $9 + local.get $8 f64.mul end - local.set $12 - local.get $11 - local.get $12 - local.get $10 + local.set $7 + local.get $8 + local.get $7 + local.get $9 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $12 - local.get $10 - local.get $10 + local.get $7 + local.get $9 + local.get $9 f64.mul f64.mul - local.get $10 + local.get $9 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4532,7 +4375,7 @@ end unreachable end - local.get $1 + local.get $2 i32.const 2139095040 i32.ge_u if @@ -4542,155 +4385,151 @@ return end block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $1 - local.tee $2 + local.get $2 + local.tee $1 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $12 + local.tee $8 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $11 - local.get $12 - local.get $11 + local.set $9 + local.get $8 + local.get $9 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $11 + local.get $9 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $11 + local.get $9 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.0 end - local.get $2 + local.get $1 i32.const 23 i32.shr_s i32.const 152 i32.sub local.tee $2 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $6 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $1 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $3 + local.get $2 i32.const 6 i32.shr_s i32.const 3 i32.shl i32.const 5632 i32.add - local.tee $4 + local.tee $2 i64.load - local.set $7 - local.get $4 - i64.load offset=8 - local.set $6 + local.get $6 + i64.shl local.get $2 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $8 + i64.load offset=8 + local.tee $4 + i64.const 64 + local.get $6 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $6 i64.const 32 i64.gt_u if (result i64) + local.get $4 local.get $6 - local.get $8 i64.const 32 i64.sub i64.shl - local.get $4 + local.get $2 i64.load offset=16 i64.const 96 - local.get $8 + local.get $6 i64.sub i64.shr_u i64.or else - local.get $6 + local.get $4 i64.const 32 - local.get $8 + local.get $6 i64.sub i64.shr_u end - local.set $3 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $1 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $5 - local.get $7 - local.get $8 - i64.shl - local.get $6 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - i64.mul local.get $3 - local.get $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.tee $6 i64.const 2 i64.shl - local.tee $5 + local.tee $4 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y i32.const 0 - local.get $7 + local.get $6 i64.const 62 i64.shr_u - local.get $5 + local.get $4 i64.const 63 i64.shr_u i64.add i32.wrap_i64 - local.tee $2 + local.tee $1 i32.sub - local.get $2 - local.get $9 + local.get $1 + local.get $5 select end - local.set $2 + local.set $1 global.get $~lib/math/rempio2f_y - local.set $12 - local.get $2 + local.set $9 + local.get $1 i32.const 1 i32.and if (result f32) - local.get $12 - local.get $12 - local.get $12 + local.get $9 + local.get $9 + local.get $9 f64.mul - local.tee $11 - local.get $12 + local.tee $8 + local.get $9 f64.mul - local.tee $12 - local.get $11 + local.tee $7 + local.get $8 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $12 - local.get $11 - local.get $11 + local.get $7 + local.get $8 + local.get $8 f64.mul f64.mul - local.get $11 + local.get $8 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4699,26 +4538,26 @@ f64.add f32.demote_f64 else - local.get $12 - local.get $12 + local.get $9 + local.get $9 f64.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f64.mul - local.set $12 - local.get $11 + local.set $8 + local.get $9 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $12 + local.get $8 f64.const 0.04166662332373906 f64.mul f64.add - local.get $12 - local.get $11 + local.get $8 + local.get $9 f64.mul - local.get $11 + local.get $9 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4730,7 +4569,7 @@ local.tee $0 f32.neg local.get $0 - local.get $2 + local.get $1 i32.const 1 i32.add i32.const 2 @@ -4738,19 +4577,19 @@ select return end - local.get $11 + local.get $9 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $12 + local.get $8 f64.const 0.04166662332373906 f64.mul f64.add - local.get $12 - local.get $11 + local.get $8 + local.get $9 f64.mul - local.get $11 + local.get $9 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4761,27 +4600,28 @@ ) (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) (local $1 f64) - (local $2 i32) - (local $3 f64) + (local $2 f64) + (local $3 i32) (local $4 f64) - (local $5 f64) - (local $6 i32) + (local $5 i32) + (local $6 f64) (local $7 i32) (local $8 i64) local.get $0 i64.reinterpret_f64 local.tee $8 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $8 i64.const 32 i64.shr_u i64.const 2147483647 i64.and i32.wrap_i64 - local.tee $6 + local.set $5 + local.get $8 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $7 + local.get $5 i32.const 1078159482 i32.ge_u if @@ -4807,7 +4647,7 @@ return end end - local.get $6 + local.get $5 i32.const 1071001154 i32.gt_u if @@ -4825,18 +4665,18 @@ f64.copysign f64.add i32.trunc_f64_s - local.get $6 + local.get $5 i32.const 1072734898 i32.lt_u select - local.tee $2 + local.tee $3 f64.convert_i32_s local.tee $1 f64.const 0.6931471803691238 f64.mul f64.sub - local.tee $0 - local.get $0 + local.tee $4 + local.get $4 local.get $1 f64.const 1.9082149292705877e-10 f64.mul @@ -4846,9 +4686,9 @@ f64.sub local.get $1 f64.sub - local.set $3 + local.set $4 else - local.get $6 + local.get $5 i32.const 1016070144 i32.lt_u if @@ -4860,26 +4700,26 @@ local.get $0 f64.const 0.5 f64.mul - local.tee $4 + local.tee $2 f64.mul - local.tee $5 - local.get $5 + local.tee $1 + local.get $1 f64.mul - local.set $1 + local.set $6 f64.const 3 - local.get $5 + local.get $1 f64.const -0.03333333333333313 f64.mul f64.const 1 f64.add + local.get $6 local.get $1 - local.get $5 f64.const -7.93650757867488e-05 f64.mul f64.const 1.5873015872548146e-03 f64.add + local.get $6 local.get $1 - local.get $5 f64.const -2.0109921818362437e-07 f64.mul f64.const 4.008217827329362e-06 @@ -4888,51 +4728,51 @@ f64.add f64.mul f64.add - local.tee $1 - local.get $4 + local.tee $6 + local.get $2 f64.mul f64.sub - local.set $4 - local.get $5 + local.set $2 local.get $1 - local.get $4 + local.get $6 + local.get $2 f64.sub f64.const 6 local.get $0 - local.get $4 + local.get $2 f64.mul f64.sub f64.div f64.mul - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.eqz if local.get $0 local.get $0 - local.get $1 + local.get $2 f64.mul - local.get $5 + local.get $1 f64.sub f64.sub return end local.get $0 - local.get $1 - local.get $3 + local.get $2 + local.get $4 f64.sub f64.mul - local.get $3 + local.get $4 f64.sub - local.get $5 + local.get $1 f64.sub - local.set $3 - local.get $2 + local.set $1 + local.get $3 i32.const -1 i32.eq if local.get $0 - local.get $3 + local.get $1 f64.sub f64.const 0.5 f64.mul @@ -4940,7 +4780,7 @@ f64.sub return end - local.get $2 + local.get $3 i32.const 1 i32.eq if @@ -4948,7 +4788,7 @@ f64.const -0.25 f64.lt if - local.get $3 + local.get $1 local.get $0 f64.const 0.5 f64.add @@ -4958,16 +4798,15 @@ return end local.get $0 - local.get $3 + local.get $1 f64.sub - local.tee $0 - local.get $0 - f64.add + f64.const 2 + f64.mul f64.const 1 f64.add return end - local.get $2 + local.get $3 i64.extend_i32_s i64.const 1023 i64.add @@ -4976,16 +4815,16 @@ f64.reinterpret_i64 local.set $4 i32.const 1 - local.get $2 + local.get $3 i32.const 56 i32.gt_s - local.get $2 + local.get $3 i32.const 0 i32.lt_s select if local.get $0 - local.get $3 + local.get $1 f64.sub f64.const 1 f64.add @@ -4997,7 +4836,7 @@ local.get $0 local.get $4 f64.mul - local.get $2 + local.get $3 i32.const 1024 i32.eq select @@ -5008,22 +4847,22 @@ local.get $0 f64.const 1 i64.const 1023 - local.get $2 + local.get $3 i64.extend_i32_s i64.sub i64.const 52 i64.shl f64.reinterpret_i64 - local.tee $1 + local.tee $2 f64.sub - local.get $3 + local.get $1 f64.sub f64.const 1 - local.get $3 local.get $1 + local.get $2 f64.add f64.sub - local.get $2 + local.get $3 i32.const 20 i32.lt_s select @@ -5099,11 +4938,7 @@ f64.mul f64.const 6755399441055744 f64.add - local.tee $4 - f64.const 6755399441055744 - f64.sub - local.set $0 - local.get $4 + local.tee $0 i64.reinterpret_f64 local.tee $5 i64.const 127 @@ -5124,6 +4959,9 @@ local.set $3 local.get $2 local.get $0 + f64.const 6755399441055744 + f64.sub + local.tee $0 f64.const -0.005415212348111709 f64.mul f64.add @@ -5328,24 +5166,25 @@ (local $1 f32) (local $2 f32) (local $3 i32) - (local $4 i32) - (local $5 f32) + (local $4 f32) + (local $5 i32) (local $6 i32) (local $7 f32) local.get $0 i32.reinterpret_f32 - local.tee $4 + local.tee $6 + i32.const 2147483647 + i32.and + local.set $5 + local.get $6 i32.const 31 i32.shr_u local.set $6 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 + local.get $5 i32.const 1100331076 i32.ge_u if - local.get $4 + local.get $5 i32.const 2139095040 i32.gt_u if @@ -5357,7 +5196,7 @@ f32.const -1 return end - local.get $4 + local.get $5 i32.const 1118925335 i32.gt_u if @@ -5367,7 +5206,7 @@ return end end - local.get $4 + local.get $5 i32.const 1051816472 i32.gt_u if @@ -5385,19 +5224,19 @@ f32.copysign f32.add i32.trunc_f32_s - local.get $4 + local.get $5 i32.const 1065686418 i32.lt_u select local.tee $3 f32.convert_i32_s - local.tee $0 + local.tee $1 f32.const 0.6931381225585938 f32.mul f32.sub - local.tee $1 + local.tee $4 + local.get $4 local.get $1 - local.get $0 f32.const 9.05800061445916e-06 f32.mul local.tee $1 @@ -5406,9 +5245,9 @@ f32.sub local.get $1 f32.sub - local.set $5 + local.set $4 else - local.get $4 + local.get $5 i32.const 855638016 i32.lt_u if @@ -5463,10 +5302,10 @@ end local.get $0 local.get $2 - local.get $5 + local.get $4 f32.sub f32.mul - local.get $5 + local.get $4 f32.sub local.get $1 f32.sub @@ -5504,9 +5343,8 @@ local.get $0 local.get $1 f32.sub - local.tee $0 - local.get $0 - f32.add + f32.const 2 + f32.mul f32.const 1 f32.add return @@ -5517,7 +5355,7 @@ i32.const 23 i32.shl f32.reinterpret_i32 - local.set $5 + local.set $4 i32.const 1 local.get $3 i32.const 56 @@ -5538,7 +5376,7 @@ f32.const 1701411834604692317316873e14 f32.mul local.get $0 - local.get $5 + local.get $4 f32.mul local.get $3 i32.const 128 @@ -5570,15 +5408,15 @@ i32.lt_s select f32.add - local.get $5 + local.get $4 f32.mul ) (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) (local $1 f64) - (local $2 f64) + (local $2 i64) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 f64) block $~lib/util/math/expf_lut|inlined.0 (result f32) local.get $0 f64.promote_f32 @@ -5627,9 +5465,11 @@ local.tee $1 f64.const 6755399441055744 f64.add + local.tee $5 + i64.reinterpret_f64 local.set $2 local.get $1 - local.get $2 + local.get $5 f64.const 6755399441055744 f64.sub f64.sub @@ -5649,8 +5489,6 @@ f64.mul f64.add local.get $2 - i64.reinterpret_f64 - local.tee $5 i32.wrap_i64 i32.const 31 i32.and @@ -5659,7 +5497,7 @@ i32.const 7712 i32.add i64.load - local.get $5 + local.get $2 i64.const 47 i64.shl i64.add @@ -5950,27 +5788,27 @@ ) (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 f64) - (local $4 i32) + (local $4 i64) (local $5 i32) - (local $6 f64) - (local $7 i64) + (local $6 i32) + (local $7 f64) block $~lib/util/math/exp2f_lut|inlined.0 (result f32) local.get $0 f64.promote_f32 local.set $3 local.get $0 i32.reinterpret_f32 - local.tee $4 + local.tee $5 i32.const 20 i32.shr_u i32.const 2047 i32.and - local.tee $5 + local.tee $6 i32.const 1072 i32.ge_u if f32.const 0 - local.get $4 + local.get $5 i32.const -8388608 i32.eq br_if $~lib/util/math/exp2f_lut|inlined.0 @@ -5978,7 +5816,7 @@ local.get $0 local.get $0 f32.add - local.get $5 + local.get $6 i32.const 2040 i32.ge_u br_if $~lib/util/math/exp2f_lut|inlined.0 @@ -5999,10 +5837,13 @@ drop end local.get $3 - local.get $3 f64.const 211106232532992 f64.add - local.tee $6 + local.tee $7 + i64.reinterpret_f64 + local.set $4 + local.get $3 + local.get $7 f64.const 211106232532992 f64.sub f64.sub @@ -6021,9 +5862,7 @@ f64.mul f64.mul f64.add - local.get $6 - i64.reinterpret_f64 - local.tee $7 + local.get $4 i32.wrap_i64 i32.const 31 i32.and @@ -6032,7 +5871,7 @@ i32.const 7712 i32.add i64.load - local.get $7 + local.get $4 i64.const 47 i64.shl i64.add @@ -6044,177 +5883,176 @@ local.get $2 call $std/math/check ) - (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + (func $~lib/math/NativeMath.hypot (param $0 f64) (param $1 f64) (result f64) + (local $2 i64) + (local $3 i64) (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 f64) + (local $5 f64) + (local $6 f64) + (local $7 i32) (local $8 f64) (local $9 i32) (local $10 f64) - (local $11 i32) + (local $11 f64) (local $12 f64) - (local $13 f64) local.get $1 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $4 + local.tee $2 local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $5 + local.tee $3 i64.gt_u if - local.get $5 - local.get $4 - local.set $5 - local.set $4 + local.get $3 + local.get $2 + local.set $3 + local.set $2 end - local.get $5 + local.get $2 + f64.reinterpret_i64 + local.set $1 + local.get $2 i64.const 52 i64.shr_u i32.wrap_i64 - local.set $11 - local.get $4 - f64.reinterpret_i64 - local.set $1 - block $__inlined_func$~lib/math/NativeMath.hypot (result f64) + local.tee $7 + i32.const 2047 + i32.eq + if local.get $1 - local.get $4 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $9 - i32.const 2047 - i32.eq - br_if $__inlined_func$~lib/math/NativeMath.hypot - drop - local.get $5 - f64.reinterpret_i64 - local.tee $0 - i64.const 0 - local.get $4 - local.get $11 - i32.const 2047 - i32.eq - select - i64.eqz - br_if $__inlined_func$~lib/math/NativeMath.hypot - drop + return + end + local.get $3 + f64.reinterpret_i64 + local.set $0 + i64.const 0 + local.get $2 + local.get $3 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $9 + i32.const 2047 + i32.eq + select + i64.eqz + if + local.get $0 + return + end + local.get $9 + local.get $7 + i32.sub + i32.const 64 + i32.gt_s + if local.get $0 local.get $1 f64.add - local.get $11 - local.get $9 - i32.sub - i32.const 64 - i32.gt_s - br_if $__inlined_func$~lib/math/NativeMath.hypot - drop - f64.const 1 - local.set $10 - local.get $11 - i32.const 1533 - i32.gt_u + return + end + f64.const 1 + local.set $8 + local.get $9 + i32.const 1533 + i32.gt_u + if (result f64) + f64.const 5260135901548373507240989e186 + local.set $8 + local.get $1 + f64.const 1.90109156629516e-211 + f64.mul + local.set $1 + local.get $0 + f64.const 1.90109156629516e-211 + f64.mul + else + local.get $7 + i32.const 573 + i32.lt_u if (result f64) - f64.const 5260135901548373507240989e186 - local.set $10 - local.get $1 f64.const 1.90109156629516e-211 + local.set $8 + local.get $1 + f64.const 5260135901548373507240989e186 f64.mul local.set $1 local.get $0 - f64.const 1.90109156629516e-211 + f64.const 5260135901548373507240989e186 f64.mul else - local.get $9 - i32.const 573 - i32.lt_u - if (result f64) - f64.const 1.90109156629516e-211 - local.set $10 - local.get $1 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $1 - local.get $0 - f64.const 5260135901548373507240989e186 - f64.mul - else - local.get $0 - end + local.get $0 end - local.set $0 - local.get $1 - local.get $1 - local.get $1 - f64.const 134217729 - f64.mul - local.tee $13 - f64.sub - local.get $13 - f64.add - local.tee $13 - f64.sub - local.set $8 - local.get $0 - local.get $0 - local.get $0 - f64.const 134217729 - f64.mul - local.tee $12 - f64.sub - local.get $12 - f64.add - local.tee $12 - f64.sub - local.set $7 - local.get $10 - local.get $13 - local.get $13 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $1 - f64.sub - local.get $13 - local.get $13 - f64.add - local.get $8 - f64.add - local.get $8 - f64.mul - f64.add - local.get $12 - local.get $12 - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.sub - local.get $12 - local.get $12 - f64.add - local.get $7 - f64.add - local.get $7 - f64.mul - f64.add - f64.add - local.get $1 - f64.add - local.get $0 - f64.add - f64.sqrt - f64.mul end - local.get $2 - local.get $3 - call $std/math/check + local.tee $0 + local.get $0 + local.get $0 + f64.const 134217729 + f64.mul + local.tee $12 + f64.sub + local.get $12 + f64.add + local.tee $11 + f64.sub + local.set $6 + local.get $0 + local.get $0 + f64.mul + local.set $5 + local.get $1 + local.get $1 + local.get $1 + f64.const 134217729 + f64.mul + local.tee $0 + f64.sub + local.get $0 + f64.add + local.tee $10 + f64.sub + local.set $12 + local.get $8 + local.get $10 + local.get $10 + f64.mul + local.get $1 + local.get $1 + f64.mul + local.tee $0 + f64.sub + local.get $10 + local.get $10 + f64.add + local.get $12 + f64.add + local.get $12 + f64.mul + f64.add + local.get $11 + local.get $11 + f64.mul + local.get $5 + f64.sub + local.get $11 + local.get $11 + f64.add + local.get $6 + f64.add + local.get $6 + f64.mul + f64.add + f64.add + local.get $0 + f64.add + local.get $5 + f64.add + f64.sqrt + f64.mul ) (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) (local $4 i32) @@ -6222,27 +6060,27 @@ (local $6 i32) (local $7 f64) (local $8 f32) - local.get $1 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $4 - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $5 - i32.gt_u - if - local.get $5 - local.get $4 - local.set $5 - local.set $4 - end - local.get $5 - f32.reinterpret_i32 - local.set $0 block $__inlined_func$~lib/math/NativeMathf.hypot (result f32) + local.get $1 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $4 + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $5 + i32.gt_u + if + local.get $5 + local.get $4 + local.set $5 + local.set $4 + end + local.get $5 + f32.reinterpret_i32 + local.set $0 local.get $4 f32.reinterpret_i32 local.tee $1 @@ -6323,394 +6161,363 @@ local.get $3 call $std/math/check ) - (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/math/NativeMath.log10 (param $0 f64) (result f64) + (local $1 i32) + (local $2 f64) (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i64) - (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - block $__inlined_func$~lib/math/NativeMath.log10 - i32.const 1 + (local $4 f64) + (local $5 i64) + (local $6 f64) + (local $7 f64) + (local $8 i32) + i32.const 1 + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $1 + i32.const 31 + i32.shr_u + local.get $1 + i32.const 1048576 + i32.lt_u + select + if + local.get $5 + i64.const 1 + i64.shl + i64.eqz + if + f64.const -1 + local.get $0 + local.get $0 + f64.mul + f64.div + return + end + local.get $1 + i32.const 31 + i32.shr_u + if + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.div + return + end + i32.const -54 + local.set $8 local.get $0 - local.tee $3 + f64.const 18014398509481984 + f64.mul i64.reinterpret_f64 - local.tee $6 + local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 - i32.const 31 - i32.shr_u - local.get $4 - i32.const 1048576 - i32.lt_u - select + local.set $1 + else + local.get $1 + i32.const 2146435072 + i32.ge_u if - local.get $6 - i64.const 1 + local.get $0 + return + else + local.get $5 + i64.const 32 i64.shl + i64.const 1 + local.get $1 + i32.const 1072693248 + i32.eq + select i64.eqz if - f64.const -1 - local.get $3 - local.get $3 - f64.mul - f64.div - local.set $3 - br $__inlined_func$~lib/math/NativeMath.log10 - end - local.get $4 - i32.const 31 - i32.shr_u - if - local.get $3 - local.get $3 - f64.sub f64.const 0 - f64.div - local.set $3 - br $__inlined_func$~lib/math/NativeMath.log10 - end - i32.const -54 - local.set $7 - local.get $3 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $4 - else - local.get $4 - i32.const 2146435072 - i32.ge_u - if - br $__inlined_func$~lib/math/NativeMath.log10 - else - local.get $6 - i64.const 32 - i64.shl - i64.const 1 - local.get $4 - i32.const 1072693248 - i32.eq - select - i64.eqz - if - f64.const 0 - local.set $3 - br $__inlined_func$~lib/math/NativeMath.log10 - end + return end end - local.get $6 - i64.const 4294967295 - i64.and - local.get $4 - i32.const 614242 - i32.add - local.tee $4 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $5 - local.get $5 - f64.const 2 - f64.add - f64.div - local.tee $8 - local.get $8 - f64.mul - local.tee $9 - local.get $9 - f64.mul - local.set $3 - local.get $7 - local.get $4 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $13 - f64.const 0.30102999566361177 - f64.mul - local.tee $14 - local.get $5 - local.get $5 - f64.const 0.5 - f64.mul - local.get $5 - f64.mul - local.tee $10 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $11 - f64.const 0.4342944818781689 - f64.mul - local.tee $15 - f64.add - local.set $12 - local.get $13 - f64.const 3.694239077158931e-13 - f64.mul - local.get $5 - local.get $11 - f64.sub - local.get $10 - f64.sub - local.get $8 - local.get $10 - local.get $9 - local.get $3 - local.get $3 - local.get $3 - f64.const 0.14798198605116586 - f64.mul - f64.const 0.1818357216161805 - f64.add - f64.mul - f64.const 0.2857142874366239 - f64.add - f64.mul - f64.const 0.6666666666666735 - f64.add - f64.mul - local.get $3 - local.get $3 - local.get $3 - f64.const 0.15313837699209373 - f64.mul - f64.const 0.22222198432149784 - f64.add - f64.mul - f64.const 0.3999999999940942 - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.tee $3 - local.get $11 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $3 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.get $14 - local.get $12 - f64.sub - local.get $15 - f64.add - f64.add - local.get $12 - f64.add - local.set $3 end + local.get $5 + i64.const 4294967295 + i64.and + local.get $1 + i32.const 614242 + i32.add + local.tee $1 + i32.const 1048575 + i32.and + i32.const 1072079006 + i32.add + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + f64.const 1 + f64.sub + local.tee $0 + f64.const 0.5 + f64.mul + local.get $0 + f64.mul + local.set $3 + local.get $0 + local.get $0 + f64.const 2 + f64.add + f64.div + local.tee $6 + local.get $6 + f64.mul + local.tee $4 + local.get $4 + f64.mul + local.set $2 + local.get $0 + local.get $0 + local.get $3 + f64.sub + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $7 + f64.sub + local.get $3 + f64.sub + local.get $6 local.get $3 + local.get $4 + local.get $2 + local.get $2 + local.get $2 + f64.const 0.14798198605116586 + f64.mul + f64.const 0.1818357216161805 + f64.add + f64.mul + f64.const 0.2857142874366239 + f64.add + f64.mul + f64.const 0.6666666666666735 + f64.add + f64.mul + local.get $2 + local.get $2 + local.get $2 + f64.const 0.15313837699209373 + f64.mul + f64.const 0.22222198432149784 + f64.add + f64.mul + f64.const 0.3999999999940942 + f64.add + f64.mul + f64.add + f64.add + f64.mul + f64.add + local.set $0 local.get $1 + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + local.get $8 + i32.add + f64.convert_i32_s + local.tee $3 + f64.const 0.30102999566361177 + f64.mul + local.tee $6 + local.get $7 + f64.const 0.4342944818781689 + f64.mul + local.tee $2 + f64.add + local.set $4 + local.get $3 + f64.const 3.694239077158931e-13 + f64.mul + local.get $0 + local.get $7 + f64.add + f64.const 2.5082946711645275e-11 + f64.mul + f64.add + local.get $0 + f64.const 0.4342944818781689 + f64.mul + f64.add + local.get $6 + local.get $4 + f64.sub local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/log10 - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end + f64.add + f64.add + local.get $4 + f64.add ) - (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) + (func $~lib/math/NativeMathf.log10 (param $0 f32) (result f32) + (local $1 i32) + (local $2 f32) + (local $3 f32) (local $4 f32) - (local $5 i32) - (local $6 f32) - (local $7 f32) - (local $8 f32) - (local $9 f32) - block $__inlined_func$~lib/math/NativeMathf.log10 + (local $5 f32) + (local $6 i32) + i32.const 1 + local.get $0 + i32.reinterpret_f32 + local.tee $1 + i32.const 31 + i32.shr_u + local.get $1 + i32.const 8388608 + i32.lt_u + select + if + local.get $1 i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_u - local.get $3 - i32.const 8388608 - i32.lt_u - select + i32.shl + i32.eqz if - local.get $3 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.log10 - end - local.get $3 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.log10 - end - i32.const -25 - local.set $5 + f32.const -1 + local.get $0 local.get $0 - f32.const 33554432 f32.mul - i32.reinterpret_f32 - local.set $3 - else - local.get $3 - i32.const 2139095040 - i32.ge_u - if - br $__inlined_func$~lib/math/NativeMathf.log10 - else - local.get $3 - i32.const 1065353216 - i32.eq - if - f32.const 0 - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.log10 - end - end + f32.div + return end - local.get $3 - i32.const 4913933 - i32.add - local.tee $3 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - local.get $0 - f32.const 2 - f32.add - f32.div - local.tee $6 - local.get $6 - f32.mul - local.tee $7 - local.get $7 - f32.mul - local.set $4 - local.get $5 - local.get $3 - i32.const 23 + local.get $1 + i32.const 31 i32.shr_u - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - local.tee $9 - f32.const 7.903415166765626e-07 - f32.mul - local.get $0 - local.get $0 - local.get $0 - f32.const 0.5 - f32.mul + if + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.div + return + end + i32.const -25 + local.set $6 local.get $0 + f32.const 33554432 f32.mul - local.tee $0 - f32.sub i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $8 - f32.sub - local.get $0 - f32.sub - local.get $6 - local.get $0 - local.get $7 - local.get $4 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add - f32.mul - local.get $4 - local.get $4 - f32.const 0.24279078841209412 - f32.mul - f32.const 0.40000972151756287 - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $8 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $0 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $8 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $9 - f32.const 0.3010292053222656 - f32.mul - f32.add - local.set $0 + local.set $1 + else + local.get $1 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + return + else + local.get $1 + i32.const 1065353216 + i32.eq + if + f32.const 0 + return + end + end end + local.get $1 + i32.const 4913933 + i32.add + local.tee $1 + i32.const 8388607 + i32.and + i32.const 1060439283 + i32.add + f32.reinterpret_i32 + f32.const 1 + f32.sub + local.tee $0 + local.get $0 + f32.const 2 + f32.add + f32.div + local.tee $2 + local.get $2 + f32.mul + local.tee $4 + local.get $4 + f32.mul + local.set $3 + local.get $0 local.get $0 + local.get $0 + f32.const 0.5 + f32.mul + local.get $0 + f32.mul + local.tee $0 + f32.sub + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $5 + f32.sub + local.get $0 + f32.sub + local.get $2 + local.get $0 + local.get $4 + local.get $3 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $3 + local.get $3 + f32.const 0.24279078841209412 + f32.mul + f32.const 0.40000972151756287 + f32.add + f32.mul + f32.add + f32.add + f32.mul + f32.add + local.set $0 local.get $1 + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + local.get $6 + i32.add + f32.convert_i32_s + local.tee $2 + f32.const 7.903415166765626e-07 + f32.mul + local.get $0 + local.get $5 + f32.add + f32.const -3.168997136526741e-05 + f32.mul + f32.add + local.get $0 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $5 + f32.const 0.434326171875 + f32.mul + f32.add local.get $2 - call $std/math/check + f32.const 0.3010292053222656 + f32.mul + f32.add ) (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) (local $1 i64) @@ -6719,9 +6526,10 @@ (local $4 f64) (local $5 f64) (local $6 f64) - (local $7 i64) - (local $8 f64) + (local $7 f64) + (local $8 i64) (local $9 i32) + (local $10 f64) block $~lib/util/math/log2_lut|inlined.0 (result f64) local.get $0 i64.reinterpret_f64 @@ -6739,14 +6547,19 @@ i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $4 + local.tee $7 f64.const 1.4426950407214463 f64.mul - local.tee $5 + local.set $4 local.get $0 local.get $0 f64.mul local.tee $2 + local.get $2 + f64.mul + local.set $5 + local.get $4 + local.get $2 local.get $0 f64.const 0.48089834696298744 f64.mul @@ -6755,9 +6568,9 @@ f64.mul local.tee $6 f64.add - local.tee $8 + local.tee $10 local.get $0 - local.get $4 + local.get $7 f64.sub f64.const 1.4426950407214463 f64.mul @@ -6765,16 +6578,13 @@ f64.const 1.6751713164886512e-10 f64.mul f64.add - local.get $5 - local.get $8 + local.get $4 + local.get $10 f64.sub local.get $6 f64.add f64.add - local.get $2 - local.get $2 - f64.mul - local.tee $4 + local.get $5 local.get $0 f64.const 0.2885390081805197 f64.mul @@ -6788,7 +6598,7 @@ f64.add f64.mul f64.add - local.get $4 + local.get $5 local.get $0 f64.const 0.1603032746063156 f64.mul @@ -6865,7 +6675,7 @@ local.get $1 i64.const 4604367669032910848 i64.sub - local.tee $7 + local.tee $8 i64.const 46 i64.shr_u i64.const 63 @@ -6873,23 +6683,23 @@ i32.wrap_i64 i32.const 4 i32.shl - local.tee $9 + local.tee $3 i32.const 8992 i32.add - local.set $3 + local.set $9 local.get $1 - local.get $7 + local.get $8 i64.const -4503599627370496 i64.and i64.sub f64.reinterpret_i64 - local.get $3 + local.get $9 f64.load f64.sub - local.get $3 + local.get $9 f64.load offset=8 f64.sub - local.get $9 + local.get $3 i32.const 7968 i32.add local.tee $3 @@ -6900,8 +6710,11 @@ i64.const -4294967296 i64.and f64.reinterpret_i64 - local.set $2 - local.get $7 + local.tee $7 + f64.const 1.4426950407214463 + f64.mul + local.set $4 + local.get $8 i64.const 52 i64.shr_s f64.convert_i64_s @@ -6909,19 +6722,16 @@ f64.load offset=8 f64.add local.tee $5 - local.get $2 - f64.const 1.4426950407214463 - f64.mul - local.tee $6 + local.get $4 f64.add - local.set $4 + local.set $6 local.get $5 - local.get $4 - f64.sub local.get $6 + f64.sub + local.get $4 f64.add local.get $0 - local.get $2 + local.get $7 f64.sub f64.const 1.4426950407214463 f64.mul @@ -6959,7 +6769,7 @@ f64.add f64.mul f64.add - local.get $4 + local.get $6 f64.add end ) @@ -7333,210 +7143,206 @@ i32.const 0 end ) - (func $std/math/test_modf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - block $__inlined_func$~lib/math/NativeMathf.mod (result f32) + local.get $1 + f32.abs + f32.const 1 + f32.eq + if local.get $0 local.get $0 f32.trunc f32.sub local.get $0 f32.copysign + return + end + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $5 + i32.const 1 + local.get $1 + local.get $1 + f32.ne + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $4 + i32.const 255 + i32.eq + i32.const 1 + local.get $3 + i32.const 1 + i32.shl + local.tee $6 + select + select + if + local.get $0 local.get $1 - f32.abs - f32.const 1 - f32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod - drop - local.get $1 - i32.reinterpret_f32 - local.tee $4 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $6 + f32.mul + local.tee $0 local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const -2147483648 + f32.div + return + end + local.get $6 + local.get $2 + i32.const 1 + i32.shl + local.tee $7 + i32.ge_u + if + local.get $0 + local.get $6 + local.get $7 + i32.ne + f32.convert_i32_u + f32.mul + return + end + local.get $2 + i32.const -2147483648 + i32.and + local.set $6 + local.get $4 + if (result i32) + local.get $2 + i32.const 8388607 i32.and - local.set $8 + i32.const 8388608 + i32.or + else + local.get $2 i32.const 1 - local.get $1 - local.get $1 - f32.ne + local.get $4 + local.get $2 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $4 + i32.sub + i32.shl + end + local.set $2 + local.get $5 + if (result i32) local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 + i32.const 8388607 i32.and - local.tee $5 - i32.const 255 - i32.eq - i32.const 1 - local.get $4 + i32.const 8388608 + i32.or + else + local.get $3 i32.const 1 + local.get $5 + local.get $3 + i32.const 9 i32.shl - local.tee $7 - select - select - if - local.get $0 - local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - br $__inlined_func$~lib/math/NativeMathf.mod + i32.clz + i32.sub + local.tee $5 + i32.sub + i32.shl + end + local.set $3 + block $folding-inner0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.gt_s + if + local.get $2 + local.get $3 + i32.ge_u + if (result i32) + local.get $2 + local.get $3 + i32.eq + br_if $folding-inner0 + local.get $2 + local.get $3 + i32.sub + else + local.get $2 + end + i32.const 1 + i32.shl + local.set $2 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|0 + end end - local.get $7 + local.get $4 + local.get $2 local.get $3 - i32.const 1 - i32.shl - local.tee $9 i32.ge_u if - local.get $0 - local.get $7 - local.get $9 - i32.ne - f32.convert_i32_u - f32.mul - br $__inlined_func$~lib/math/NativeMathf.mod - end - local.get $5 - if (result i32) - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else + local.get $2 local.get $3 - i32.const 1 - local.get $5 + i32.eq + br_if $folding-inner0 + local.get $2 local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $5 i32.sub - i32.shl + local.set $2 end - local.set $3 - local.get $6 + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.tee $3 + i32.sub + local.set $4 + local.get $2 + local.get $3 + i32.shl + local.set $2 + local.get $4 + i32.const 0 + i32.gt_s if (result i32) - local.get $4 - i32.const 8388607 - i32.and + local.get $2 i32.const 8388608 - i32.or - else - local.get $4 - i32.const 1 - local.get $6 - local.get $4 - i32.const 9 - i32.shl - i32.clz i32.sub - local.tee $6 - i32.sub - i32.shl - end - local.set $4 - block $folding-inner0 - loop $while-continue|0 - local.get $5 - local.get $6 - i32.gt_s - if - local.get $3 - local.get $4 - i32.ge_u - if (result i32) - local.get $3 - local.get $4 - i32.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i32.sub - else - local.get $3 - end - i32.const 1 - i32.shl - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|0 - end - end - local.get $3 local.get $4 - i32.ge_u - if - local.get $3 - local.get $4 - i32.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i32.sub - local.set $3 - end - local.get $3 - local.get $3 - i32.const 8 - i32.shl - i32.clz - local.tee $4 + i32.const 23 i32.shl - local.set $3 - local.get $5 + i32.or + else + local.get $2 + i32.const 1 local.get $4 i32.sub - local.tee $4 - i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 8388608 - i32.sub - local.get $4 - i32.const 23 - i32.shl - i32.or - else - local.get $3 - i32.const 1 - local.get $4 - i32.sub - i32.shr_u - end - local.get $8 - i32.or - f32.reinterpret_i32 - br $__inlined_func$~lib/math/NativeMathf.mod + i32.shr_u end - local.get $0 - f32.const 0 - f32.mul + local.get $6 + i32.or + f32.reinterpret_i32 + return end - local.get $2 + local.get $0 f32.const 0 - call $std/math/check + f32.mul ) (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) (local $2 i64) @@ -7545,16 +7351,17 @@ (local $5 f64) (local $6 i64) (local $7 i64) - (local $8 i64) - (local $9 f64) - (local $10 i32) - (local $11 f64) + (local $8 f64) + (local $9 i64) + (local $10 f64) + (local $11 i32) (local $12 i32) (local $13 f64) (local $14 i64) (local $15 f64) (local $16 f64) (local $17 f64) + (local $18 f64) local.get $1 f64.abs f64.const 2 @@ -7613,7 +7420,7 @@ local.tee $7 i64.const 52 i64.shr_u - local.set $14 + local.set $9 block $~lib/util/math/pow_lut|inlined.0 local.get $0 local.tee $4 @@ -7621,7 +7428,7 @@ local.tee $2 i64.const 52 i64.shr_u - local.tee $8 + local.tee $14 i64.const 1 i64.sub i64.const 2046 @@ -7629,7 +7436,7 @@ if (result i32) i32.const 1 else - local.get $14 + local.get $9 i64.const 2047 i64.and i64.const 958 @@ -7742,7 +7549,6 @@ br_if $~lib/util/math/checkint|inlined.0 drop i32.const 0 - local.get $7 i64.const 1 i64.const 1075 local.get $6 @@ -7751,6 +7557,7 @@ local.tee $6 i64.const 1 i64.sub + local.get $7 i64.and i64.const 0 i64.ne @@ -7814,7 +7621,6 @@ br_if $~lib/util/math/checkint|inlined.1 drop i32.const 0 - local.get $7 i64.const 1 i64.const 1075 local.get $6 @@ -7823,6 +7629,7 @@ local.tee $6 i64.const 1 i64.sub + local.get $7 i64.and i64.const 0 i64.ne @@ -7838,16 +7645,16 @@ drop i32.const 2 end - local.tee $10 + local.tee $11 i32.eqz br_if $~lib/util/math/pow_lut|inlined.0 - local.get $8 + local.get $14 i64.const 2047 i64.and - local.set $8 + local.set $14 i32.const 262144 i32.const 0 - local.get $10 + local.get $11 i32.const 1 i32.eq select @@ -7857,7 +7664,7 @@ i64.and local.set $2 end - local.get $14 + local.get $9 i64.const 2047 i64.and i64.const 958 @@ -7871,7 +7678,7 @@ i64.const 4607182418800017408 i64.eq br_if $~lib/util/math/pow_lut|inlined.0 - local.get $14 + local.get $9 i64.const 2047 i64.and i64.const 958 @@ -7879,7 +7686,7 @@ br_if $~lib/util/math/pow_lut|inlined.0 f64.const inf f64.const 0 - local.get $14 + local.get $9 i64.const 2048 i64.lt_u local.get $2 @@ -7890,7 +7697,7 @@ local.set $0 br $~lib/util/math/pow_lut|inlined.0 end - local.get $8 + local.get $14 i64.eqz if (result i64) local.get $4 @@ -7907,17 +7714,10 @@ local.set $2 end local.get $2 + local.get $2 i64.const 4604531861337669632 i64.sub - local.tee $8 - i64.const 45 - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - local.set $10 - local.get $2 - local.get $8 + local.tee $9 i64.const -4503599627370496 i64.and i64.sub @@ -7927,45 +7727,55 @@ i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $1 - local.get $10 + local.tee $0 + local.get $9 + i64.const 45 + i64.shr_u + i64.const 127 + i64.and + i32.wrap_i64 i32.const 5 i32.shl i32.const 10272 i32.add - local.tee $10 + local.tee $11 f64.load - local.tee $0 + local.tee $1 f64.mul f64.const 1 f64.sub - local.tee $13 - local.get $6 - f64.reinterpret_i64 - local.get $1 - f64.sub - local.get $0 - f64.mul - local.tee $17 - f64.add - local.tee $11 - f64.const -0.5 - f64.mul - local.set $15 - local.get $8 + local.set $13 + local.get $9 i64.const 52 i64.shr_s f64.convert_i64_s - local.tee $9 + local.tee $17 f64.const 0.6931471805598903 f64.mul - local.get $10 + local.get $11 f64.load offset=16 f64.add - local.tee $4 - local.get $11 + local.tee $8 + local.get $13 + local.get $6 + f64.reinterpret_i64 + local.get $0 + f64.sub + local.get $1 + f64.mul + local.tee $18 + f64.add + local.tee $10 f64.add - local.tee $16 + local.set $15 + local.get $10 + local.get $10 + f64.const -0.5 + f64.mul + local.tee $4 + f64.mul + local.set $16 + local.get $15 local.get $13 local.get $13 f64.const -0.5 @@ -7976,49 +7786,46 @@ f64.add local.tee $13 local.get $13 - local.get $9 + local.get $17 f64.const 5.497923018708371e-14 f64.mul - local.get $10 + local.get $11 f64.load offset=24 f64.add - local.get $4 - local.get $16 + local.get $8 + local.get $15 f64.sub - local.get $11 + local.get $10 f64.add f64.add - local.get $17 - local.get $15 + local.get $18 + local.get $4 local.get $1 f64.add f64.mul f64.add - local.get $16 + local.get $15 local.get $13 f64.sub local.get $0 f64.add f64.add - local.get $11 - local.get $11 - local.get $15 - f64.mul - local.tee $0 + local.get $10 + local.get $16 f64.mul - local.get $11 + local.get $10 f64.const 0.5000000000000007 f64.mul f64.const -0.6666666666666679 f64.add - local.get $0 - local.get $11 + local.get $16 + local.get $10 f64.const -0.6666666663487739 f64.mul f64.const 0.7999999995323976 f64.add - local.get $0 - local.get $11 + local.get $16 + local.get $10 f64.const 1.0000415263675542 f64.mul f64.const -1.142909628459501 @@ -8031,39 +7838,40 @@ f64.add local.tee $0 f64.add - local.tee $1 + local.tee $8 f64.sub local.get $0 f64.add global.set $~lib/util/math/log_tail block $~lib/util/math/exp_inline|inlined.0 (result f64) - local.get $5 local.get $7 i64.const -134217728 i64.and f64.reinterpret_i64 local.tee $0 - f64.sub - local.get $1 + local.get $8 i64.reinterpret_f64 i64.const -134217728 i64.and f64.reinterpret_i64 - local.tee $4 + local.tee $1 f64.mul + local.set $4 local.get $5 + local.get $0 + f64.sub + local.get $1 + f64.mul + local.get $5 + local.get $8 local.get $1 - local.get $4 f64.sub global.get $~lib/util/math/log_tail f64.add f64.mul f64.add local.set $1 - local.get $0 local.get $4 - f64.mul - local.tee $4 i64.reinterpret_f64 local.tee $6 i64.const 52 @@ -8121,12 +7929,8 @@ f64.const 6755399441055744 f64.add local.tee $0 - f64.const 6755399441055744 - f64.sub - local.set $5 - local.get $0 i64.reinterpret_f64 - local.tee $8 + local.tee $9 i64.const 127 i64.and i64.const 1 @@ -8136,22 +7940,25 @@ i32.shl i32.const 5664 i32.add - local.tee $10 + local.tee $11 i64.load offset=8 - local.get $8 local.get $12 i64.extend_i32_u + local.get $9 i64.add i64.const 45 i64.shl i64.add local.set $6 local.get $4 - local.get $5 + local.get $0 + f64.const 6755399441055744 + f64.sub + local.tee $0 f64.const -0.005415212348111709 f64.mul f64.add - local.get $5 + local.get $0 f64.const -1.2864023111638346e-14 f64.mul f64.add @@ -8161,7 +7968,7 @@ local.get $1 f64.mul local.set $0 - local.get $10 + local.get $11 f64.load local.get $1 f64.add @@ -8188,7 +7995,7 @@ i32.eqz if block $~lib/util/math/specialcase|inlined.1 (result f64) - local.get $8 + local.get $9 i64.const 2147483648 i64.and i64.eqz @@ -8216,25 +8023,25 @@ local.get $0 f64.mul f64.add - local.tee $9 + local.tee $8 f64.abs f64.const 1 f64.lt if (result f64) f64.const 1 - local.get $9 + local.get $8 f64.copysign local.tee $5 - local.get $9 + local.get $8 f64.add local.tee $1 local.get $5 local.get $1 f64.sub - local.get $9 + local.get $8 f64.add local.get $4 - local.get $9 + local.get $8 f64.sub local.get $4 local.get $0 @@ -8244,7 +8051,7 @@ f64.add local.get $5 f64.sub - local.tee $9 + local.tee $8 f64.const 0 f64.eq if (result f64) @@ -8253,10 +8060,10 @@ i64.and f64.reinterpret_i64 else - local.get $9 + local.get $8 end else - local.get $9 + local.get $8 end f64.const 2.2250738585072014e-308 f64.mul @@ -8296,12 +8103,12 @@ (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i64) + (local $4 f32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 f64) + (local $9 f64) local.get $1 f32.abs f32.const 2 @@ -8357,16 +8164,16 @@ block $~lib/util/math/powf_lut|inlined.0 local.get $1 i32.reinterpret_f32 - local.tee $3 + local.tee $5 i32.const 1 i32.shl i32.const 1 i32.sub i32.const -16777217 i32.ge_u - local.tee $4 + local.tee $3 local.get $0 - local.tee $5 + local.tee $4 i32.reinterpret_f32 local.tee $2 i32.const 8388608 @@ -8375,11 +8182,11 @@ i32.ge_u i32.or if - local.get $4 + local.get $3 if f32.const 1 local.set $0 - local.get $3 + local.get $5 i32.const 1 i32.shl i32.eqz @@ -8390,12 +8197,12 @@ i32.const 1065353216 i32.eq br_if $~lib/util/math/powf_lut|inlined.0 - local.get $5 + local.get $4 local.get $1 f32.add local.set $0 i32.const 1 - local.get $3 + local.get $5 i32.const 1 i32.shl i32.const -16777216 @@ -8417,7 +8224,7 @@ br_if $~lib/util/math/powf_lut|inlined.0 f32.const 0 local.set $0 - local.get $3 + local.get $5 i32.const 31 i32.shr_u i32.eqz @@ -8443,8 +8250,8 @@ i32.ge_u if f32.const 1 - local.get $5 - local.get $5 + local.get $4 + local.get $4 f32.mul local.tee $0 f32.neg @@ -8455,38 +8262,38 @@ if (result i32) block $~lib/util/math/checkintf|inlined.0 (result i32) i32.const 0 - local.get $3 + local.get $5 i32.const 23 i32.shr_u i32.const 255 i32.and - local.tee $4 + local.tee $2 i32.const 127 i32.lt_u br_if $~lib/util/math/checkintf|inlined.0 drop i32.const 2 - local.get $4 + local.get $2 i32.const 150 i32.gt_u br_if $~lib/util/math/checkintf|inlined.0 drop i32.const 0 - local.get $3 i32.const 1 i32.const 150 - local.get $4 + local.get $2 i32.sub i32.shl - local.tee $4 + local.tee $2 i32.const 1 i32.sub + local.get $5 i32.and br_if $~lib/util/math/checkintf|inlined.0 drop i32.const 1 - local.get $3 - local.get $4 + local.get $2 + local.get $5 i32.and br_if $~lib/util/math/checkintf|inlined.0 drop @@ -8501,7 +8308,7 @@ local.tee $0 f32.div local.get $0 - local.get $3 + local.get $5 i32.const 31 i32.shr_u select @@ -8512,8 +8319,8 @@ i32.const 31 i32.shr_u if - local.get $5 - local.get $5 + local.get $4 + local.get $4 f32.sub local.tee $0 local.get $0 @@ -8521,54 +8328,54 @@ local.set $0 block $~lib/util/math/checkintf|inlined.1 (result i32) i32.const 0 - local.get $3 - local.tee $4 + local.get $5 + local.tee $3 i32.const 23 i32.shr_u i32.const 255 i32.and - local.tee $3 + local.tee $5 i32.const 127 i32.lt_u br_if $~lib/util/math/checkintf|inlined.1 drop i32.const 2 - local.get $3 + local.get $5 i32.const 150 i32.gt_u br_if $~lib/util/math/checkintf|inlined.1 drop i32.const 0 - local.get $4 i32.const 1 i32.const 150 - local.get $3 + local.get $5 i32.sub i32.shl - local.tee $3 + local.tee $5 i32.const 1 i32.sub + local.get $3 i32.and br_if $~lib/util/math/checkintf|inlined.1 drop i32.const 1 local.get $3 - local.get $4 + local.get $5 i32.and br_if $~lib/util/math/checkintf|inlined.1 drop i32.const 2 end - local.tee $4 + local.tee $5 i32.eqz br_if $~lib/util/math/powf_lut|inlined.0 i32.const 65536 i32.const 0 - local.get $4 + local.get $5 i32.const 1 i32.eq select - local.set $8 + local.set $7 local.get $2 i32.const 2147483647 i32.and @@ -8578,7 +8385,7 @@ i32.const 8388608 i32.lt_u if (result i32) - local.get $5 + local.get $4 f32.const 8388608 f32.mul i32.reinterpret_f32 @@ -8595,14 +8402,14 @@ local.get $2 i32.const 1060306944 i32.sub - local.tee $3 + local.tee $5 i32.const -8388608 i32.and - local.tee $4 + local.tee $3 i32.sub f32.reinterpret_i32 f64.promote_f32 - local.get $3 + local.get $5 i32.const 19 i32.shr_u i32.const 15 @@ -8611,48 +8418,48 @@ i32.shl i32.const 10016 i32.add - local.tee $3 + local.tee $5 f64.load f64.mul f64.const 1 f64.sub - local.tee $6 - local.get $6 + local.tee $9 + local.get $9 f64.mul - local.set $7 + local.set $8 local.get $1 f64.promote_f32 - local.get $6 + local.get $9 f64.const 0.288457581109214 f64.mul f64.const -0.36092606229713164 f64.add - local.get $7 - local.get $7 + local.get $8 + local.get $8 f64.mul f64.mul - local.get $6 + local.get $9 f64.const 1.4426950408774342 f64.mul - local.get $3 + local.get $5 f64.load offset=8 - local.get $4 + local.get $3 i32.const 23 i32.shr_s f64.convert_i32_s f64.add f64.add - local.get $6 + local.get $9 f64.const 0.480898481472577 f64.mul f64.const -0.7213474675006291 f64.add - local.get $7 + local.get $8 f64.mul f64.add f64.add f64.mul - local.tee $6 + local.tee $9 i64.reinterpret_f64 i64.const 47 i64.shr_u @@ -8661,26 +8468,26 @@ i64.const 32959 i64.ge_u if - local.get $6 + local.get $9 f64.const 127.99999995700433 f64.gt if f32.const -1584563250285286751870879e5 f32.const 1584563250285286751870879e5 - local.get $8 + local.get $7 select f32.const 1584563250285286751870879e5 f32.mul local.set $0 br $~lib/util/math/powf_lut|inlined.0 end - local.get $6 + local.get $9 f64.const -150 f64.le if f32.const -2.524354896707238e-29 f32.const 2.524354896707238e-29 - local.get $8 + local.get $7 select f32.const 2.524354896707238e-29 f32.mul @@ -8688,32 +8495,33 @@ br $~lib/util/math/powf_lut|inlined.0 end end - local.get $6 - local.get $6 + local.get $9 f64.const 211106232532992 f64.add - local.tee $7 + local.tee $8 + i64.reinterpret_f64 + local.set $6 + local.get $9 + local.get $8 f64.const 211106232532992 f64.sub f64.sub - local.tee $6 + local.tee $9 f64.const 0.6931471806916203 f64.mul f64.const 1 f64.add - local.get $6 + local.get $9 f64.const 0.05550361559341535 f64.mul f64.const 0.2402284522445722 f64.add - local.get $6 - local.get $6 + local.get $9 + local.get $9 f64.mul f64.mul f64.add - local.get $7 - i64.reinterpret_f64 - local.tee $9 + local.get $6 i32.wrap_i64 i32.const 31 i32.and @@ -8722,9 +8530,9 @@ i32.const 7712 i32.add i64.load - local.get $9 - local.get $8 + local.get $7 i64.extend_i32_u + local.get $6 i64.add i64.const 47 i64.shl @@ -8742,46 +8550,46 @@ i32.const 1 global.set $~lib/math/random_seeded local.get $0 - local.get $0 i64.const 33 i64.shr_u + local.get $0 i64.xor i64.const -49064778989728563 i64.mul local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor i64.const -4265267296055464877 i64.mul local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor global.set $~lib/math/random_state0_64 global.get $~lib/math/random_state0_64 i64.const -1 i64.xor local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor i64.const -49064778989728563 i64.mul local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor i64.const -4265267296055464877 i64.mul local.tee $2 - local.get $2 i64.const 33 i64.shr_u + local.get $2 i64.xor global.set $~lib/math/random_state1_64 local.get $0 @@ -8789,62 +8597,62 @@ i32.const 1831565813 i32.add local.tee $1 + i32.const 1 + i32.or local.get $1 i32.const 15 i32.shr_u - i32.xor local.get $1 - i32.const 1 - i32.or + i32.xor i32.mul local.tee $1 - local.get $1 - local.get $1 i32.const 61 i32.or local.get $1 - local.get $1 i32.const 7 i32.shr_u + local.get $1 i32.xor i32.mul + local.get $1 i32.add + local.get $1 i32.xor local.tee $1 - local.get $1 i32.const 14 i32.shr_u + local.get $1 i32.xor global.set $~lib/math/random_state0_32 global.get $~lib/math/random_state0_32 i32.const 1831565813 i32.add local.tee $1 + i32.const 1 + i32.or local.get $1 i32.const 15 i32.shr_u - i32.xor local.get $1 - i32.const 1 - i32.or + i32.xor i32.mul local.tee $1 - local.get $1 - local.get $1 i32.const 61 i32.or local.get $1 - local.get $1 i32.const 7 i32.shr_u + local.get $1 i32.xor i32.mul + local.get $1 i32.add + local.get $1 i32.xor local.tee $1 - local.get $1 i32.const 14 i32.shr_u + local.get $1 i32.xor global.set $~lib/math/random_state1_32 global.get $~lib/math/random_state1_32 @@ -8966,19 +8774,14 @@ i64.const 2047 i64.and local.set $5 - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $8 i32.const 1 local.get $1 local.get $1 f64.ne i32.const 1 - local.get $2 + local.get $0 + i64.reinterpret_f64 + local.tee $2 i64.const 52 i64.shr_u i64.const 2047 @@ -9009,6 +8812,11 @@ local.get $0 return end + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $8 local.get $3 i64.eqz if (result i64) @@ -9215,17 +9023,13 @@ i32.const 255 i32.and local.set $5 - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_u - local.set $8 i32.const 1 local.get $1 local.get $1 f32.ne - local.get $2 + local.get $0 + i32.reinterpret_f32 + local.tee $2 i32.const 23 i32.shr_u i32.const 255 @@ -9256,6 +9060,10 @@ local.get $0 return end + local.get $2 + i32.const 31 + i32.shr_u + local.set $8 local.get $3 if (result i32) local.get $2 @@ -9452,6 +9260,7 @@ (local $6 i32) (local $7 i32) (local $8 f64) + (local $9 f64) local.get $0 i64.reinterpret_f64 local.tee $2 @@ -9539,15 +9348,15 @@ local.get $0 f64.const 1.5707963267341256 f64.add - local.set $0 + local.set $3 i32.const -1 local.set $5 local.get $7 i32.const 1073291771 i32.ne if (result f64) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -9555,7 +9364,7 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $0 + local.get $3 f64.const 6.077100506303966e-11 f64.add local.tee $3 @@ -9572,13 +9381,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $0 + local.set $3 local.get $7 i32.const 1073291771 i32.ne if (result f64) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -9586,7 +9395,7 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $0 + local.get $3 f64.const 6.077100506303966e-11 f64.sub local.tee $3 @@ -9619,15 +9428,15 @@ f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $3 + local.tee $4 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $3 + local.get $4 f64.const 6.077100506506192e-11 f64.mul - local.tee $4 + local.tee $3 f64.sub local.tee $1 i64.reinterpret_f64 @@ -9642,25 +9451,25 @@ i32.const 16 i32.gt_u if - local.get $3 + local.get $4 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $3 + local.get $4 f64.const 6.077100506303966e-11 f64.mul - local.tee $4 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $4 + local.get $1 f64.sub f64.sub - local.set $4 + local.set $3 local.get $6 local.get $0 - local.get $4 + local.get $3 f64.sub local.tee $1 i64.reinterpret_f64 @@ -9675,24 +9484,24 @@ i32.const 49 i32.gt_u if (result f64) - local.get $3 + local.get $4 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $3 + local.get $4 f64.const 2.0222662487111665e-21 f64.mul - local.tee $4 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $4 + local.get $1 f64.sub f64.sub - local.set $4 + local.set $3 local.get $0 - local.get $4 + local.get $3 f64.sub else local.get $1 @@ -9704,10 +9513,10 @@ local.get $0 local.get $1 f64.sub - local.get $4 + local.get $3 f64.sub global.set $~lib/math/rempio2_y1 - local.get $3 + local.get $4 i32.trunc_f64_s br $~lib/math/rempio2|inlined.1 end @@ -9729,20 +9538,24 @@ i32.const 1 i32.and if (result f64) - f64.const 1 local.get $3 local.get $3 f64.mul local.tee $0 + local.get $0 + f64.mul + local.set $1 + f64.const 1 + local.get $0 f64.const 0.5 f64.mul - local.tee $1 - f64.sub local.tee $8 + f64.sub + local.tee $9 f64.const 1 - local.get $8 + local.get $9 f64.sub - local.get $1 + local.get $8 f64.sub local.get $0 local.get $0 @@ -9756,10 +9569,7 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $1 + local.get $1 local.get $1 f64.mul local.get $0 @@ -9838,30 +9648,27 @@ (local $1 i32) (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 f64) - (local $11 f64) - (local $12 f64) + (local $7 f64) + (local $8 f64) + (local $9 f64) block $folding-inner0 local.get $0 i32.reinterpret_f32 - local.tee $2 + local.tee $1 i32.const 31 i32.shr_u - local.set $9 - local.get $2 + local.set $5 + local.get $1 i32.const 2147483647 i32.and - local.tee $1 + local.tee $2 i32.const 1061752794 i32.le_u if - local.get $1 + local.get $2 i32.const 964689920 i32.lt_u if @@ -9870,49 +9677,49 @@ end local.get $0 f64.promote_f32 - local.tee $11 - local.get $11 + local.tee $8 + local.get $8 f64.mul - local.tee $10 - local.get $11 + local.tee $9 + local.get $8 f64.mul - local.set $12 + local.set $7 br $folding-inner0 end - local.get $1 + local.get $2 i32.const 1081824209 i32.le_u if - local.get $1 + local.get $2 i32.const 1075235811 i32.le_u if - local.get $9 + local.get $5 if (result f32) local.get $0 f64.promote_f32 f64.const 1.5707963267948966 f64.add - local.tee $12 - local.get $12 + local.tee $9 + local.get $9 f64.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f64.mul - local.set $12 - local.get $11 + local.set $8 + local.get $9 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $12 + local.get $8 f64.const 0.04166662332373906 f64.mul f64.add - local.get $12 - local.get $11 + local.get $8 + local.get $9 f64.mul - local.get $11 + local.get $9 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9926,26 +9733,26 @@ f64.promote_f32 f64.const 1.5707963267948966 f64.sub - local.tee $12 - local.get $12 + local.tee $9 + local.get $9 f64.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f64.mul - local.set $12 - local.get $11 + local.set $8 + local.get $9 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $12 + local.get $8 f64.const 0.04166662332373906 f64.mul f64.add - local.get $12 - local.get $11 + local.get $8 + local.get $9 f64.mul - local.get $11 + local.get $9 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9958,58 +9765,58 @@ end local.get $0 f64.promote_f32 - local.tee $12 + local.tee $9 f64.const 3.141592653589793 f64.add - local.get $12 + local.get $9 f64.const 3.141592653589793 f64.sub - local.get $9 + local.get $5 select f64.neg - local.tee $11 - local.get $11 + local.tee $8 + local.get $8 f64.mul - local.tee $10 - local.get $11 + local.tee $9 + local.get $8 f64.mul - local.set $12 + local.set $7 br $folding-inner0 end - local.get $1 + local.get $2 i32.const 1088565717 i32.le_u if - local.get $1 + local.get $2 i32.const 1085271519 i32.le_u if - local.get $9 + local.get $5 if (result f32) local.get $0 f64.promote_f32 f64.const 4.71238898038469 f64.add - local.tee $12 - local.get $12 + local.tee $9 + local.get $9 f64.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f64.mul - local.set $12 - local.get $11 + local.set $8 + local.get $9 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $12 + local.get $8 f64.const 0.04166662332373906 f64.mul f64.add - local.get $12 - local.get $11 + local.get $8 + local.get $9 f64.mul - local.get $11 + local.get $9 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -10022,26 +9829,26 @@ f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $12 - local.get $12 + local.tee $9 + local.get $9 f64.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f64.mul - local.set $12 - local.get $11 + local.set $8 + local.get $9 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $12 + local.get $8 f64.const 0.04166662332373906 f64.mul f64.add - local.get $12 - local.get $11 + local.get $8 + local.get $9 f64.mul - local.get $11 + local.get $9 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -10055,24 +9862,24 @@ end local.get $0 f64.promote_f32 - local.tee $12 + local.tee $9 f64.const 6.283185307179586 f64.add - local.get $12 + local.get $9 f64.const 6.283185307179586 f64.sub - local.get $9 + local.get $5 select - local.tee $11 - local.get $11 + local.tee $8 + local.get $8 f64.mul - local.tee $10 - local.get $11 + local.tee $9 + local.get $8 f64.mul - local.set $12 + local.set $7 br $folding-inner0 end - local.get $1 + local.get $2 i32.const 2139095040 i32.ge_u if @@ -10082,154 +9889,150 @@ return end block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $1 - local.tee $2 + local.get $2 + local.tee $1 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $12 + local.tee $8 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $11 - local.get $12 - local.get $11 + local.set $9 + local.get $8 + local.get $9 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $11 + local.get $9 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $11 + local.get $9 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.1 end - local.get $2 + local.get $1 i32.const 23 i32.shr_s i32.const 152 i32.sub local.tee $2 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $6 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $1 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $3 + local.get $2 i32.const 6 i32.shr_s i32.const 3 i32.shl i32.const 5632 i32.add - local.tee $4 + local.tee $2 i64.load - local.set $7 - local.get $4 - i64.load offset=8 - local.set $6 + local.get $6 + i64.shl local.get $2 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $8 + i64.load offset=8 + local.tee $4 + i64.const 64 + local.get $6 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $6 i64.const 32 i64.gt_u if (result i64) + local.get $4 local.get $6 - local.get $8 i64.const 32 i64.sub i64.shl - local.get $4 + local.get $2 i64.load offset=16 i64.const 96 - local.get $8 + local.get $6 i64.sub i64.shr_u i64.or else - local.get $6 + local.get $4 i64.const 32 - local.get $8 + local.get $6 i64.sub i64.shr_u end - local.set $3 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $1 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $5 - local.get $7 - local.get $8 - i64.shl - local.get $6 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - i64.mul local.get $3 - local.get $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.tee $6 i64.const 2 i64.shl - local.tee $5 + local.tee $4 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y i32.const 0 - local.get $7 + local.get $6 i64.const 62 i64.shr_u - local.get $5 + local.get $4 i64.const 63 i64.shr_u i64.add i32.wrap_i64 - local.tee $2 + local.tee $1 i32.sub - local.get $2 - local.get $9 + local.get $1 + local.get $5 select end - local.set $2 + local.set $1 global.get $~lib/math/rempio2f_y - local.set $12 - local.get $2 + local.set $9 + local.get $1 i32.const 1 i32.and if (result f32) - local.get $12 - local.get $12 + local.get $9 + local.get $9 f64.mul - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f64.mul - local.set $12 - local.get $11 + local.set $8 + local.get $9 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $12 + local.get $8 f64.const 0.04166662332373906 f64.mul f64.add - local.get $12 - local.get $11 + local.get $8 + local.get $9 f64.mul - local.get $11 + local.get $9 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -10238,27 +10041,27 @@ f64.add f32.demote_f64 else - local.get $12 - local.get $12 - local.get $12 + local.get $9 + local.get $9 + local.get $9 f64.mul - local.tee $11 - local.get $12 + local.tee $8 + local.get $9 f64.mul - local.tee $12 - local.get $11 + local.tee $7 + local.get $8 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $12 - local.get $11 - local.get $11 + local.get $7 + local.get $8 + local.get $8 f64.mul f64.mul - local.get $11 + local.get $8 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -10270,27 +10073,27 @@ local.tee $0 f32.neg local.get $0 - local.get $2 + local.get $1 i32.const 2 i32.and select return end - local.get $11 - local.get $12 - local.get $10 + local.get $8 + local.get $7 + local.get $9 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $12 - local.get $10 - local.get $10 + local.get $7 + local.get $9 + local.get $9 f64.mul f64.mul - local.get $10 + local.get $9 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -10393,18 +10196,18 @@ (local $3 f32) (local $4 f32) (local $5 i32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $5 - f32.reinterpret_i32 - local.set $3 - f32.const 0.5 - local.get $0 - f32.copysign - local.set $4 - block $__inlined_func$~lib/math/NativeMathf.sinh + block $__inlined_func$~lib/math/NativeMathf.sinh (result f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $5 + f32.reinterpret_i32 + local.set $3 + f32.const 0.5 + local.get $0 + f32.copysign + local.set $4 local.get $5 i32.const 1118925335 i32.lt_u @@ -10416,10 +10219,12 @@ i32.const 1065353216 i32.lt_u if + local.get $0 local.get $5 i32.const 964689920 i32.lt_u br_if $__inlined_func$~lib/math/NativeMathf.sinh + drop local.get $4 local.get $3 local.get $3 @@ -10433,7 +10238,6 @@ f32.div f32.sub f32.mul - local.set $0 br $__inlined_func$~lib/math/NativeMathf.sinh end local.get $4 @@ -10445,7 +10249,6 @@ f32.div f32.add f32.mul - local.set $0 br $__inlined_func$~lib/math/NativeMathf.sinh end local.get $3 @@ -10460,9 +10263,7 @@ f32.mul f32.const 1661534994731144841129758e11 f32.mul - local.set $0 end - local.get $0 local.get $1 local.get $2 call $std/math/check @@ -10511,17 +10312,17 @@ local.get $0 f64.mul local.tee $4 - local.get $0 + local.get $4 f64.mul - local.set $5 + local.set $3 local.get $0 local.get $1 local.get $4 - local.get $5 - local.get $4 local.get $4 + local.get $0 f64.mul - local.tee $3 + local.tee $5 + local.get $3 local.get $3 local.get $3 local.get $3 @@ -10602,9 +10403,8 @@ local.get $3 f64.sub f64.sub - local.tee $0 - local.get $0 - f64.add + f64.const 2 + f64.mul f64.sub f64.mul return @@ -10616,29 +10416,30 @@ local.get $1 return end - f64.const -1 local.get $1 - f64.div - local.tee $5 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $4 - local.get $5 - local.get $4 + local.set $4 + f64.const -1 local.get $1 + f64.div + local.tee $5 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 local.tee $1 + local.get $5 + local.get $1 + local.get $4 f64.mul f64.const 1 f64.add - local.get $4 - local.get $3 local.get $1 + local.get $3 + local.get $4 local.get $0 f64.sub f64.sub @@ -10649,32 +10450,31 @@ ) (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 f64) + (local $7 f64) local.get $0 i64.reinterpret_f64 - local.tee $2 + local.tee $4 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $2 i32.const 31 i32.shr_u - local.set $6 - local.get $4 + local.get $2 i32.const 2147483647 i32.and - local.tee $4 + local.tee $2 i32.const 1072243195 i32.le_u if - local.get $4 + local.get $2 i32.const 1044381696 - i32.lt_s + i32.lt_u if local.get $0 return @@ -10685,42 +10485,43 @@ call $~lib/math/tan_kern return end - local.get $4 + local.get $2 i32.const 2146435072 - i32.ge_s + i32.ge_u if local.get $0 local.get $0 f64.sub return end - block $~lib/math/rempio2|inlined.2 (result i32) - local.get $2 + local.set $2 + block $~lib/math/rempio2|inlined.2 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $7 + local.tee $5 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $4 - local.get $6 + local.set $3 + local.get $2 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add - local.set $0 + local.set $1 i32.const -1 - local.set $4 - local.get $7 + local.set $3 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -10728,14 +10529,14 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $0 + local.get $1 f64.const 6.077100506303966e-11 f64.add - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.add local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -10745,13 +10546,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $0 - local.get $7 + local.set $1 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -10759,14 +10560,14 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $0 + local.get $1 f64.const 6.077100506303966e-11 f64.sub - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.sub local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -10776,31 +10577,30 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $4 br $~lib/math/rempio2|inlined.2 end - local.get $7 + local.get $5 i32.const 1094263291 i32.lt_u if - local.get $7 + local.get $5 i32.const 20 i32.shr_u - local.tee $6 + local.tee $3 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $3 + local.tee $6 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $3 + local.get $6 f64.const 6.077100506506192e-11 f64.mul - local.tee $5 + local.tee $7 f64.sub local.tee $1 i64.reinterpret_f64 @@ -10815,25 +10615,25 @@ i32.const 16 i32.gt_u if - local.get $3 + local.get $6 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $3 + local.get $6 f64.const 6.077100506303966e-11 f64.mul - local.tee $5 + local.tee $7 f64.sub local.tee $0 f64.sub - local.get $5 + local.get $7 f64.sub f64.sub - local.set $5 - local.get $6 + local.set $7 + local.get $3 local.get $0 - local.get $5 + local.get $7 f64.sub local.tee $1 i64.reinterpret_f64 @@ -10848,24 +10648,24 @@ i32.const 49 i32.gt_u if (result f64) - local.get $3 + local.get $6 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $3 + local.get $6 f64.const 2.0222662487111665e-21 f64.mul - local.tee $5 + local.tee $7 f64.sub local.tee $0 f64.sub - local.get $5 + local.get $7 f64.sub f64.sub - local.set $5 + local.set $7 local.get $0 - local.get $5 + local.get $7 f64.sub else local.get $1 @@ -10877,27 +10677,28 @@ local.get $0 local.get $1 f64.sub - local.get $5 + local.get $7 f64.sub global.set $~lib/math/rempio2_y1 - local.get $3 + local.get $6 i32.trunc_f64_s + local.set $3 br $~lib/math/rempio2|inlined.2 end i32.const 0 - local.get $2 + local.get $4 call $~lib/math/pio2_large_quot - local.tee $4 + local.tee $3 i32.sub - local.get $4 - local.get $6 + local.get $3 + local.get $2 select + local.set $3 end - local.set $6 global.get $~lib/math/rempio2_y0 global.get $~lib/math/rempio2_y1 i32.const 1 - local.get $6 + local.get $3 i32.const 1 i32.and i32.const 1 @@ -10909,15 +10710,12 @@ (local $1 i32) (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 f64) - (local $11 f64) - (local $12 f64) + (local $7 f64) + (local $8 f64) + (local $9 f64) block $folding-inner1 block $folding-inner0 local.get $0 @@ -10925,7 +10723,7 @@ local.tee $1 i32.const 31 i32.shr_u - local.set $9 + local.set $5 local.get $1 i32.const 2147483647 i32.and @@ -10942,13 +10740,13 @@ end local.get $0 f64.promote_f32 - local.tee $10 - local.get $10 + local.tee $8 + local.get $8 f64.mul - local.tee $11 - local.get $10 + local.tee $9 + local.get $9 f64.mul - local.set $12 + local.set $7 br $folding-inner0 end local.get $2 @@ -10961,40 +10759,40 @@ if local.get $0 f64.promote_f32 - local.tee $12 + local.tee $9 f64.const 1.5707963267948966 f64.add - local.get $12 + local.get $9 f64.const 1.5707963267948966 f64.sub - local.get $9 + local.get $5 select - local.tee $10 - local.get $10 + local.tee $8 + local.get $8 f64.mul - local.tee $11 - local.get $10 + local.tee $9 + local.get $9 f64.mul - local.set $12 + local.set $7 br $folding-inner1 else local.get $0 f64.promote_f32 - local.tee $12 + local.tee $9 f64.const 3.141592653589793 f64.add - local.get $12 + local.get $9 f64.const 3.141592653589793 f64.sub - local.get $9 + local.get $5 select - local.tee $10 - local.get $10 + local.tee $8 + local.get $8 f64.mul - local.tee $11 - local.get $10 + local.tee $9 + local.get $9 f64.mul - local.set $12 + local.set $7 br $folding-inner0 end unreachable @@ -11009,40 +10807,40 @@ if local.get $0 f64.promote_f32 - local.tee $12 + local.tee $9 f64.const 4.71238898038469 f64.add - local.get $12 + local.get $9 f64.const 4.71238898038469 f64.sub - local.get $9 + local.get $5 select - local.tee $10 - local.get $10 + local.tee $8 + local.get $8 f64.mul - local.tee $11 - local.get $10 + local.tee $9 + local.get $9 f64.mul - local.set $12 + local.set $7 br $folding-inner1 else local.get $0 f64.promote_f32 - local.tee $12 + local.tee $9 f64.const 6.283185307179586 f64.add - local.get $12 + local.get $9 f64.const 6.283185307179586 f64.sub - local.get $9 + local.get $5 select - local.tee $10 - local.get $10 + local.tee $8 + local.get $8 f64.mul - local.tee $11 - local.get $10 + local.tee $9 + local.get $9 f64.mul - local.set $12 + local.set $7 br $folding-inner0 end unreachable @@ -11064,22 +10862,22 @@ if local.get $0 f64.promote_f32 - local.tee $12 + local.tee $8 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $10 - local.get $12 - local.get $10 + local.set $9 + local.get $8 + local.get $9 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $10 + local.get $9 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $10 + local.get $9 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.2 end @@ -11088,86 +10886,82 @@ i32.shr_s i32.const 152 i32.sub - local.tee $1 + local.tee $2 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $6 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $1 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $3 + local.get $2 i32.const 6 i32.shr_s i32.const 3 i32.shl i32.const 5632 i32.add - local.tee $4 + local.tee $2 i64.load - local.set $7 - local.get $4 + local.get $6 + i64.shl + local.get $2 i64.load offset=8 - local.set $6 - local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $8 + local.tee $4 + i64.const 64 + local.get $6 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $6 i64.const 32 i64.gt_u if (result i64) + local.get $4 local.get $6 - local.get $8 i64.const 32 i64.sub i64.shl - local.get $4 + local.get $2 i64.load offset=16 i64.const 96 - local.get $8 + local.get $6 i64.sub i64.shr_u i64.or else - local.get $6 + local.get $4 i64.const 32 - local.get $8 + local.get $6 i64.sub i64.shr_u end - local.set $3 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $5 - local.get $7 - local.get $8 - i64.shl - local.get $6 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - i64.mul local.get $3 - local.get $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.tee $6 i64.const 2 i64.shl - local.tee $5 + local.tee $4 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y i32.const 0 - local.get $7 + local.get $6 i64.const 62 i64.shr_u - local.get $5 + local.get $4 i64.const 63 i64.shr_u i64.add @@ -11175,41 +10969,41 @@ local.tee $1 i32.sub local.get $1 - local.get $9 + local.get $5 select end local.set $1 global.get $~lib/math/rempio2f_y - local.tee $10 - local.get $10 + local.tee $8 + local.get $8 f64.mul - local.tee $11 - local.get $10 + local.tee $9 + local.get $9 f64.mul - local.set $12 + local.set $7 f64.const -1 - local.get $10 - local.get $12 - local.get $11 + local.get $8 + local.get $9 + local.get $8 + f64.mul + local.tee $8 + local.get $9 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $12 - local.get $11 - local.get $11 - f64.mul - local.tee $12 + local.get $8 + local.get $7 f64.mul - local.get $11 + local.get $9 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $12 - local.get $11 + local.get $7 + local.get $9 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -11218,9 +11012,9 @@ f64.add f64.mul f64.add - local.tee $12 + local.tee $9 f64.div - local.get $12 + local.get $9 local.get $1 i32.const 1 i32.and @@ -11228,28 +11022,28 @@ f32.demote_f64 return end - local.get $10 - local.get $12 - local.get $11 + local.get $8 + local.get $9 + local.get $8 + f64.mul + local.tee $8 + local.get $9 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $12 - local.get $11 - local.get $11 - f64.mul - local.tee $12 + local.get $8 + local.get $7 f64.mul - local.get $11 + local.get $9 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $12 - local.get $11 + local.get $7 + local.get $9 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -11262,28 +11056,28 @@ return end f64.const -1 - local.get $10 - local.get $12 - local.get $11 + local.get $8 + local.get $9 + local.get $8 + f64.mul + local.tee $8 + local.get $9 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $12 - local.get $11 - local.get $11 - f64.mul - local.tee $12 + local.get $8 + local.get $7 f64.mul - local.get $11 + local.get $9 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $12 - local.get $11 + local.get $7 + local.get $9 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -11300,13 +11094,12 @@ (local $4 i32) (local $5 i64) local.get $0 - local.tee $3 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and local.tee $5 f64.reinterpret_i64 - local.set $0 + local.set $3 local.get $5 i64.const 32 i64.shr_u @@ -11321,14 +11114,14 @@ if (result f64) f64.const 1 f64.const 0 - local.get $0 + local.get $3 f64.div f64.sub else f64.const 1 f64.const 2 - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.add call $~lib/math/NativeMath.expm1 f64.const 2 @@ -11341,12 +11134,12 @@ i32.const 1070618798 i32.gt_u if (result f64) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.add call $~lib/math/NativeMath.expm1 - local.tee $0 - local.get $0 + local.tee $3 + local.get $3 f64.const 2 f64.add f64.div @@ -11355,28 +11148,28 @@ i32.const 1048576 i32.ge_u if (result f64) - local.get $0 + local.get $3 f64.const -2 f64.mul call $~lib/math/NativeMath.expm1 - local.tee $0 + local.tee $3 f64.neg - local.get $0 + local.get $3 f64.const 2 f64.add f64.div else - local.get $0 + local.get $3 end end end - local.get $3 + local.get $0 f64.copysign local.get $1 local.get $2 call $std/math/check if (result i32) - local.get $3 + local.get $0 call $~lib/bindings/Math/tanh local.get $1 local.get $2 @@ -11501,14 +11294,18 @@ end local.get $0 local.get $0 - local.get $0 f64.mul - local.tee $2 + local.tee $1 + local.get $1 + f64.mul + local.set $4 + local.get $0 + local.get $1 local.get $0 f64.mul - local.get $2 - local.get $2 - local.get $2 + local.get $1 + local.get $1 + local.get $1 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -11516,13 +11313,10 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $2 - local.get $2 - local.get $2 - f64.mul - local.tee $4 + local.get $1 + local.get $4 f64.mul - local.get $2 + local.get $1 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 @@ -11536,21 +11330,21 @@ f64.add global.set $~lib/math/NativeMath.sincos_sin f64.const 1 - local.get $2 + local.get $1 f64.const 0.5 f64.mul - local.tee $1 + local.tee $2 f64.sub local.tee $7 f64.const 1 local.get $7 f64.sub - local.get $1 - f64.sub - local.get $2 - local.get $2 - local.get $2 local.get $2 + f64.sub + local.get $1 + local.get $1 + local.get $1 + local.get $1 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -11562,8 +11356,8 @@ local.get $4 local.get $4 f64.mul - local.get $2 - local.get $2 + local.get $1 + local.get $1 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -11614,15 +11408,15 @@ local.get $0 f64.const 1.5707963267341256 f64.add - local.set $0 + local.set $1 i32.const -1 local.set $5 local.get $8 i32.const 1073291771 i32.ne if (result f64) - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -11630,14 +11424,14 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $0 + local.get $1 f64.const 6.077100506303966e-11 f64.add - local.tee $2 + local.tee $1 f64.const 2.0222662487959506e-21 f64.add local.set $0 - local.get $2 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -11647,13 +11441,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $0 + local.set $1 local.get $8 i32.const 1073291771 i32.ne if (result f64) - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -11661,14 +11455,14 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $0 + local.get $1 f64.const 6.077100506303966e-11 f64.sub - local.tee $2 + local.tee $1 f64.const 2.0222662487959506e-21 f64.sub local.set $0 - local.get $2 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -11694,17 +11488,17 @@ f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $2 + local.tee $4 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $2 + local.get $4 f64.const 6.077100506506192e-11 f64.mul - local.tee $4 - f64.sub local.tee $1 + f64.sub + local.tee $2 i64.reinterpret_f64 i64.const 32 i64.shr_u @@ -11717,27 +11511,28 @@ i32.const 16 i32.gt_u if - local.get $2 + local.get $4 f64.const 2.0222662487959506e-21 f64.mul local.get $0 - local.get $0 - local.get $2 + local.tee $1 + local.get $1 + local.get $4 f64.const 6.077100506303966e-11 f64.mul - local.tee $4 + local.tee $2 f64.sub local.tee $0 f64.sub - local.get $4 + local.get $2 f64.sub f64.sub - local.set $4 + local.set $1 local.get $6 local.get $0 - local.get $4 + local.get $1 f64.sub - local.tee $1 + local.tee $2 i64.reinterpret_f64 i64.const 32 i64.shr_u @@ -11750,39 +11545,40 @@ i32.const 49 i32.gt_u if (result f64) - local.get $2 + local.get $4 f64.const 8.4784276603689e-32 f64.mul local.get $0 - local.get $0 - local.get $2 + local.tee $1 + local.get $1 + local.get $4 f64.const 2.0222662487111665e-21 f64.mul - local.tee $4 + local.tee $2 f64.sub local.tee $0 f64.sub - local.get $4 + local.get $2 f64.sub f64.sub - local.set $4 + local.set $1 local.get $0 - local.get $4 + local.get $1 f64.sub else - local.get $1 + local.get $2 end - local.set $1 + local.set $2 end - local.get $1 + local.get $2 global.set $~lib/math/rempio2_y0 local.get $0 - local.get $1 + local.get $2 f64.sub - local.get $4 + local.get $1 f64.sub global.set $~lib/math/rempio2_y1 - local.get $2 + local.get $4 i32.trunc_f64_s br $~lib/math/rempio2|inlined.3 end @@ -11797,22 +11593,25 @@ end local.set $6 global.get $~lib/math/rempio2_y0 - local.tee $4 - local.get $4 + local.tee $2 + local.get $2 f64.mul - local.tee $0 - local.get $4 + local.tee $1 + local.get $1 f64.mul - local.set $2 - local.get $4 - local.get $0 + local.set $9 + local.get $2 + local.get $1 global.get $~lib/math/rempio2_y1 - local.tee $1 + local.tee $7 f64.const 0.5 f64.mul + local.get $1 local.get $2 - local.get $0 - local.get $0 + f64.mul + local.tee $0 + local.get $1 + local.get $1 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -11820,13 +11619,10 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $7 + local.get $1 + local.get $9 f64.mul - local.get $0 + local.get $1 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 @@ -11836,17 +11632,17 @@ f64.mul f64.sub f64.mul - local.get $1 + local.get $7 f64.sub - local.get $2 + local.get $0 f64.const -0.16666666666666632 f64.mul f64.sub f64.sub - local.tee $9 - local.set $2 + local.tee $4 + local.set $0 f64.const 1 - local.get $0 + local.get $1 f64.const 0.5 f64.mul local.tee $10 @@ -11857,10 +11653,10 @@ f64.sub local.get $10 f64.sub - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.get $1 + local.get $1 + local.get $1 + local.get $1 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -11869,11 +11665,11 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $7 - local.get $7 + local.get $9 + local.get $9 f64.mul - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -11884,37 +11680,37 @@ f64.mul f64.add f64.mul - local.get $4 - local.get $1 + local.get $2 + local.get $7 f64.mul f64.sub f64.add f64.add - local.set $0 + local.set $1 local.get $6 i32.const 1 i32.and if - local.get $0 - local.set $2 - local.get $9 - f64.neg + local.get $1 local.set $0 + local.get $4 + f64.neg + local.set $1 end local.get $6 i32.const 2 i32.and - if - local.get $2 + if (result f64) + local.get $1 f64.neg - local.set $2 + local.set $1 local.get $0 f64.neg - local.set $0 + else + local.get $0 end - local.get $2 global.set $~lib/math/NativeMath.sincos_sin - local.get $0 + local.get $1 global.set $~lib/math/NativeMath.sincos_cos ) (func $std/math/test_sincos (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) @@ -13083,10 +12879,10 @@ call $~lib/builtins/abort unreachable end - f32.const -8.066848754882812 - i32.const -2 f32.const -2.016712188720703 - call $std/math/test_scalbnf + f32.const -2.016712188720703 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13096,10 +12892,10 @@ call $~lib/builtins/abort unreachable end - f32.const 4.345239639282227 - i32.const -1 f32.const 2.1726198196411133 - call $std/math/test_scalbnf + f32.const 2.1726198196411133 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13110,9 +12906,9 @@ unreachable end f32.const -8.381433486938477 - i32.const 0 f32.const -8.381433486938477 - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13122,10 +12918,10 @@ call $~lib/builtins/abort unreachable end - f32.const -6.531673431396484 - i32.const 1 f32.const -13.063346862792969 - call $std/math/test_scalbnf + f32.const -13.063346862792969 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13135,10 +12931,10 @@ call $~lib/builtins/abort unreachable end - f32.const 9.267057418823242 - i32.const 2 f32.const 37.06822967529297 - call $std/math/test_scalbnf + f32.const 37.06822967529297 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13148,10 +12944,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.6619858741760254 - i32.const 3 f32.const 5.295886993408203 - call $std/math/test_scalbnf + f32.const 5.295886993408203 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13161,10 +12957,10 @@ call $~lib/builtins/abort unreachable end - f32.const -0.40660393238067627 - i32.const 4 f32.const -6.50566291809082 - call $std/math/test_scalbnf + f32.const -6.50566291809082 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13174,10 +12970,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.5617597699165344 - i32.const 5 f32.const 17.9763126373291 - call $std/math/test_scalbnf + f32.const 17.9763126373291 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13187,10 +12983,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.7741522789001465 - i32.const 6 f32.const 49.545745849609375 - call $std/math/test_scalbnf + f32.const 49.545745849609375 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13200,10 +12996,10 @@ call $~lib/builtins/abort unreachable end - f32.const -0.6787636876106262 - i32.const 7 f32.const -86.88175201416016 - call $std/math/test_scalbnf + f32.const -86.88175201416016 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13214,9 +13010,9 @@ unreachable end f32.const 0 - i32.const 2147483647 f32.const 0 - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13227,9 +13023,9 @@ unreachable end f32.const 0 - i32.const -2147483647 f32.const 0 - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13240,9 +13036,9 @@ unreachable end f32.const -0 - i32.const 2147483647 f32.const -0 - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13253,9 +13049,9 @@ unreachable end f32.const nan:0x400000 - i32.const 0 f32.const nan:0x400000 - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13266,9 +13062,9 @@ unreachable end f32.const inf - i32.const 0 f32.const inf - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13279,9 +13075,9 @@ unreachable end f32.const -inf - i32.const 0 f32.const -inf - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13292,9 +13088,9 @@ unreachable end f32.const 1 - i32.const 0 f32.const 1 - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13304,10 +13100,10 @@ call $~lib/builtins/abort unreachable end - f32.const 1 - i32.const 1 f32.const 2 - call $std/math/test_scalbnf + f32.const 2 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13317,10 +13113,10 @@ call $~lib/builtins/abort unreachable end - f32.const 1 - i32.const -1 f32.const 0.5 - call $std/math/test_scalbnf + f32.const 0.5 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13330,10 +13126,10 @@ call $~lib/builtins/abort unreachable end - f32.const 1 - i32.const 2147483647 f32.const inf - call $std/math/test_scalbnf + f32.const inf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13344,9 +13140,9 @@ unreachable end f32.const nan:0x400000 - i32.const 1 f32.const nan:0x400000 - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13357,9 +13153,9 @@ unreachable end f32.const inf - i32.const 2147483647 f32.const inf - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13370,9 +13166,9 @@ unreachable end f32.const inf - i32.const -2147483647 f32.const inf - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13383,9 +13179,9 @@ unreachable end f32.const -inf - i32.const 2147483647 f32.const -inf - call $std/math/test_scalbnf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13395,10 +13191,10 @@ call $~lib/builtins/abort unreachable end - f32.const 1701411834604692317316873e14 - i32.const -276 f32.const 1.401298464324817e-45 - call $std/math/test_scalbnf + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13408,10 +13204,10 @@ call $~lib/builtins/abort unreachable end - f32.const 1.401298464324817e-45 - i32.const 276 f32.const 1701411834604692317316873e14 - call $std/math/test_scalbnf + f32.const 1701411834604692317316873e14 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13421,10 +13217,10 @@ call $~lib/builtins/abort unreachable end - f32.const 1.000244140625 - i32.const -149 f32.const 1.401298464324817e-45 - call $std/math/test_scalbnf + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13434,10 +13230,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.7499999403953552 - i32.const -148 f32.const 1.401298464324817e-45 - call $std/math/test_scalbnf + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -13447,10 +13243,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.5000006556510925 - i32.const -128 f32.const 1.4693693398263237e-39 - call $std/math/test_scalbnf + f32.const 1.4693693398263237e-39 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -14516,9 +14312,10 @@ unreachable end f32.const -8.066848754882812 + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14529,9 +14326,10 @@ unreachable end f32.const 4.345239639282227 + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14542,9 +14340,10 @@ unreachable end f32.const -8.381433486938477 + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14555,9 +14354,10 @@ unreachable end f32.const -6.531673431396484 + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14568,9 +14368,10 @@ unreachable end f32.const 9.267057418823242 + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14581,9 +14382,10 @@ unreachable end f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.acos f32.const 0.8473311066627502 f32.const -0.13588131964206696 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14594,9 +14396,10 @@ unreachable end f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.acos f32.const 1.989530086517334 f32.const 0.03764917701482773 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14607,9 +14410,10 @@ unreachable end f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.acos f32.const 0.9742849469184875 f32.const 0.18443739414215088 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14620,9 +14424,10 @@ unreachable end f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.acos f32.const 0.6854215264320374 f32.const -0.29158344864845276 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14633,9 +14438,10 @@ unreachable end f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.acos f32.const 2.3168740272521973 f32.const -0.3795364499092102 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14646,9 +14452,10 @@ unreachable end f32.const 0 + call $~lib/math/NativeMathf.acos f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14659,9 +14466,10 @@ unreachable end f32.const -1 + call $~lib/math/NativeMathf.acos f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14672,9 +14480,10 @@ unreachable end f32.const 1 + call $~lib/math/NativeMathf.acos f32.const 0 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14685,9 +14494,10 @@ unreachable end f32.const 1.0000001192092896 + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14698,9 +14508,10 @@ unreachable end f32.const -1.0000001192092896 + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14711,9 +14522,10 @@ unreachable end f32.const inf + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14724,9 +14536,10 @@ unreachable end f32.const -inf + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14737,9 +14550,10 @@ unreachable end f32.const nan:0x400000 + call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14750,9 +14564,10 @@ unreachable end f32.const 0.49965065717697144 + call $~lib/math/NativeMathf.acos f32.const 1.0476008653640747 f32.const -0.21161814033985138 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14763,9 +14578,10 @@ unreachable end f32.const -0.5051405429840088 + call $~lib/math/NativeMathf.acos f32.const 2.1003410816192627 f32.const -0.20852705836296082 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -14776,9 +14592,10 @@ unreachable end f32.const -0.5189794898033142 + call $~lib/math/NativeMathf.acos f32.const 2.116452932357788 f32.const -0.14600826799869537 - call $std/math/test_acosf + call $std/math/check i32.eqz if i32.const 0 @@ -15756,9 +15573,10 @@ unreachable end f32.const -8.066848754882812 + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15769,9 +15587,10 @@ unreachable end f32.const 4.345239639282227 + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15782,9 +15601,10 @@ unreachable end f32.const -8.381433486938477 + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15795,9 +15615,10 @@ unreachable end f32.const -6.531673431396484 + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15808,9 +15629,10 @@ unreachable end f32.const 9.267057418823242 + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15821,9 +15643,10 @@ unreachable end f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.asin f32.const 0.7234652042388916 f32.const -0.1307632476091385 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15834,9 +15657,10 @@ unreachable end f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.asin f32.const -0.41873374581336975 f32.const 0.3161141574382782 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15847,9 +15671,10 @@ unreachable end f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.asin f32.const 0.5965113639831543 f32.const -0.4510819613933563 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15860,9 +15685,10 @@ unreachable end f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.asin f32.const 0.8853747844696045 f32.const 0.02493886835873127 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15873,9 +15699,10 @@ unreachable end f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.asin f32.const -0.7460777759552002 f32.const 0.2515012323856354 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15886,9 +15713,10 @@ unreachable end f32.const 1 + call $~lib/math/NativeMathf.asin f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15899,9 +15727,10 @@ unreachable end f32.const -1 + call $~lib/math/NativeMathf.asin f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15912,9 +15741,10 @@ unreachable end f32.const 0 + call $~lib/math/NativeMathf.asin f32.const 0 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15925,9 +15755,10 @@ unreachable end f32.const -0 + call $~lib/math/NativeMathf.asin f32.const -0 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15938,9 +15769,10 @@ unreachable end f32.const 1.0000001192092896 + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15951,9 +15783,10 @@ unreachable end f32.const -1.0000001192092896 + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15964,9 +15797,10 @@ unreachable end f32.const inf + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15977,9 +15811,10 @@ unreachable end f32.const -inf + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -15990,9 +15825,10 @@ unreachable end f32.const nan:0x400000 + call $~lib/math/NativeMathf.asin f32.const nan:0x400000 f32.const 0 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -16003,9 +15839,10 @@ unreachable end f32.const 0.5004770159721375 + call $~lib/math/NativeMathf.asin f32.const 0.5241496562957764 f32.const -0.29427099227905273 - call $std/math/test_asinf + call $std/math/check i32.eqz if i32.const 0 @@ -18243,9 +18080,10 @@ end f32.const -8.066848754882812 f32.const 4.535662651062012 + call $~lib/math/NativeMathf.atan2 f32.const -1.0585895776748657 f32.const -0.22352588176727295 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18257,9 +18095,10 @@ end f32.const 4.345239639282227 f32.const -8.887990951538086 + call $~lib/math/NativeMathf.atan2 f32.const 2.686873435974121 f32.const 0.09464472532272339 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18271,9 +18110,10 @@ end f32.const -8.381433486938477 f32.const -2.7636072635650635 + call $~lib/math/NativeMathf.atan2 f32.const -1.8893001079559326 f32.const -0.21941901743412018 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18285,9 +18125,10 @@ end f32.const -6.531673431396484 f32.const 4.567535400390625 + call $~lib/math/NativeMathf.atan2 f32.const -0.9605468511581421 f32.const 0.46015575528144836 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18299,9 +18140,10 @@ end f32.const 9.267057418823242 f32.const 4.811392307281494 + call $~lib/math/NativeMathf.atan2 f32.const 1.0919123888015747 f32.const -0.05708503723144531 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18313,9 +18155,10 @@ end f32.const -6.450045585632324 f32.const 0.6620717644691467 + call $~lib/math/NativeMathf.atan2 f32.const -1.4685084819793701 f32.const 0.19611206650733948 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18327,9 +18170,10 @@ end f32.const 7.858890056610107 f32.const 0.052154526114463806 + call $~lib/math/NativeMathf.atan2 f32.const 1.5641601085662842 f32.const 0.48143187165260315 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18341,9 +18185,10 @@ end f32.const -0.7920545339584351 f32.const 7.676402568817139 + call $~lib/math/NativeMathf.atan2 f32.const -0.10281659662723541 f32.const -0.4216274917125702 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18355,9 +18200,10 @@ end f32.const 0.6157026886940002 f32.const 2.0119025707244873 + call $~lib/math/NativeMathf.atan2 f32.const 0.29697975516319275 f32.const 0.2322007566690445 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18369,9 +18215,10 @@ end f32.const -0.5587586760520935 f32.const 0.03223983198404312 + call $~lib/math/NativeMathf.atan2 f32.const -1.5131611824035645 f32.const 0.16620726883411407 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18383,9 +18230,10 @@ end f32.const 0 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18397,9 +18245,10 @@ end f32.const 0 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18411,9 +18260,10 @@ end f32.const 0 f32.const -1 + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18425,9 +18275,10 @@ end f32.const 0 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18439,9 +18290,10 @@ end f32.const 0 f32.const 1 + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18453,9 +18305,10 @@ end f32.const 0 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18467,9 +18320,10 @@ end f32.const -0 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18481,9 +18335,10 @@ end f32.const -0 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18495,9 +18350,10 @@ end f32.const -0 f32.const -1 + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18509,9 +18365,10 @@ end f32.const -0 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18523,9 +18380,10 @@ end f32.const -0 f32.const 1 + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18537,9 +18395,10 @@ end f32.const -0 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18551,9 +18410,10 @@ end f32.const -1 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18565,9 +18425,10 @@ end f32.const -1 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18579,9 +18440,10 @@ end f32.const 1 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18593,9 +18455,10 @@ end f32.const 1 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18607,9 +18470,10 @@ end f32.const -1 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18621,9 +18485,10 @@ end f32.const 1 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18635,9 +18500,10 @@ end f32.const -1 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18649,9 +18515,10 @@ end f32.const 1 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18663,9 +18530,10 @@ end f32.const inf f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18677,9 +18545,10 @@ end f32.const -inf f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18691,9 +18560,10 @@ end f32.const inf f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const 0.7853981852531433 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18705,9 +18575,10 @@ end f32.const inf f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const 2.356194496154785 f32.const 0.02500828728079796 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18719,9 +18590,10 @@ end f32.const -inf f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const -0.7853981852531433 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18733,9 +18605,10 @@ end f32.const -inf f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const -2.356194496154785 f32.const -0.02500828728079796 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18747,9 +18620,10 @@ end f32.const 5.877471754111438e-39 f32.const 1 + call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18761,9 +18635,10 @@ end f32.const 1 f32.const 1701411834604692317316873e14 + call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18774,9 +18649,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.cbrt f64.const -2.0055552545020245 f64.const 0.46667951345443726 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/cbrt + f64.const -2.0055552545020245 + f64.const 0.46667951345443726 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18787,9 +18672,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.cbrt f64.const 1.6318162410515635 f64.const -0.08160271495580673 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/cbrt + f64.const 1.6318162410515635 + f64.const -0.08160271495580673 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18800,9 +18695,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.cbrt f64.const -2.031293910673361 f64.const -0.048101816326379776 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/cbrt + f64.const -2.031293910673361 + f64.const -0.048101816326379776 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18813,9 +18718,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.cbrt f64.const -1.8692820012204925 f64.const 0.08624018728733063 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/cbrt + f64.const -1.8692820012204925 + f64.const 0.08624018728733063 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18826,9 +18741,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.cbrt f64.const 2.100457720859702 f64.const -0.2722989022731781 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/cbrt + f64.const 2.100457720859702 + f64.const -0.2722989022731781 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18839,9 +18764,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.cbrt f64.const 0.8715311470455973 f64.const 0.4414918124675751 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/cbrt + f64.const 0.8715311470455973 + f64.const 0.4414918124675751 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18852,9 +18787,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.cbrt f64.const -0.740839030300223 f64.const 0.016453813761472702 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/cbrt + f64.const -0.740839030300223 + f64.const 0.016453813761472702 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18865,9 +18810,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.cbrt f64.const 0.8251195400559286 f64.const 0.30680638551712036 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/cbrt + f64.const 0.8251195400559286 + f64.const 0.30680638551712036 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18878,9 +18833,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.cbrt f64.const 0.9182102478959914 f64.const 0.06543998420238495 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/cbrt + f64.const 0.9182102478959914 + f64.const 0.06543998420238495 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18891,9 +18856,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.cbrt f64.const -0.8788326906580094 f64.const -0.2016713172197342 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/cbrt + f64.const -0.8788326906580094 + f64.const -0.2016713172197342 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18904,9 +18879,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.cbrt f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/cbrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18917,9 +18902,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.cbrt f64.const inf f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/cbrt + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18930,9 +18925,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.cbrt f64.const -inf f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/cbrt + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18943,9 +18948,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.cbrt f64.const 0 f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/cbrt + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18956,9 +18971,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.cbrt f64.const -0 f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/cbrt + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18969,9 +18994,19 @@ unreachable end f64.const 9.313225746154785e-10 + call $~lib/math/NativeMath.cbrt f64.const 0.0009765625 f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const 9.313225746154785e-10 + call $~lib/bindings/Math/cbrt + f64.const 0.0009765625 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18982,9 +19017,19 @@ unreachable end f64.const -9.313225746154785e-10 + call $~lib/math/NativeMath.cbrt f64.const -0.0009765625 f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const -9.313225746154785e-10 + call $~lib/bindings/Math/cbrt + f64.const -0.0009765625 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18995,9 +19040,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.cbrt f64.const 1 f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/cbrt + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19008,9 +19063,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.cbrt f64.const -1 f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/cbrt + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19021,9 +19086,19 @@ unreachable end f64.const 8 + call $~lib/math/NativeMath.cbrt f64.const 2 f64.const 0 - call $std/math/test_cbrt + call $std/math/check + if (result i32) + f64.const 8 + call $~lib/bindings/Math/cbrt + f64.const 2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -29161,9 +29236,10 @@ end f64.const -8.06684839057968 f64.const 4.535662560676869 + call $~lib/math/NativeMath.hypot f64.const 9.25452742288464 f64.const -0.31188681721687317 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29175,9 +29251,10 @@ end f64.const 4.345239849338305 f64.const -8.88799136300345 + call $~lib/math/NativeMath.hypot f64.const 9.893305808328252 f64.const 0.4593673348426819 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29189,9 +29266,10 @@ end f64.const -8.38143342755525 f64.const -2.763607337379588 + call $~lib/math/NativeMath.hypot f64.const 8.825301797432132 f64.const -0.1701754331588745 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29203,9 +29281,10 @@ end f64.const -6.531673581913484 f64.const 4.567535276842744 + call $~lib/math/NativeMath.hypot f64.const 7.970265885519092 f64.const -0.3176782727241516 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29217,9 +29296,10 @@ end f64.const 9.267056966972586 f64.const 4.811392084359796 + call $~lib/math/NativeMath.hypot f64.const 10.441639651824575 f64.const -0.2693633437156677 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29231,9 +29311,10 @@ end f64.const -6.450045556060236 f64.const 0.6620717923376739 + call $~lib/math/NativeMath.hypot f64.const 6.483936052542593 f64.const 0.35618898272514343 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29245,9 +29326,10 @@ end f64.const 7.858890253041697 f64.const 0.05215452675006225 + call $~lib/math/NativeMath.hypot f64.const 7.859063309581766 f64.const 0.08044655621051788 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29259,9 +29341,10 @@ end f64.const -0.792054511984896 f64.const 7.67640268511754 + call $~lib/math/NativeMath.hypot f64.const 7.717156764899584 f64.const 0.05178084969520569 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29273,9 +29356,10 @@ end f64.const 0.615702673197924 f64.const 2.0119025790324803 + call $~lib/math/NativeMath.hypot f64.const 2.104006123874314 f64.const -0.0918039008975029 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29287,9 +29371,10 @@ end f64.const -0.5587586823609152 f64.const 0.03223983060263804 + call $~lib/math/NativeMath.hypot f64.const 0.5596880129062913 f64.const 0.1383407711982727 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29301,9 +29386,10 @@ end f64.const 3 f64.const 4 + call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29315,9 +29401,10 @@ end f64.const -3 f64.const 4 + call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29329,9 +29416,10 @@ end f64.const 4 f64.const 3 + call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29343,9 +29431,10 @@ end f64.const 4 f64.const -3 + call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29357,9 +29446,10 @@ end f64.const -3 f64.const -4 + call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29371,9 +29461,10 @@ end f64.const 1797693134862315708145274e284 f64.const 0 + call $~lib/math/NativeMath.hypot f64.const 1797693134862315708145274e284 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29385,9 +29476,10 @@ end f64.const 1797693134862315708145274e284 f64.const -0 + call $~lib/math/NativeMath.hypot f64.const 1797693134862315708145274e284 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29399,9 +29491,10 @@ end f64.const 5e-324 f64.const 0 + call $~lib/math/NativeMath.hypot f64.const 5e-324 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29413,9 +29506,10 @@ end f64.const 5e-324 f64.const -0 + call $~lib/math/NativeMath.hypot f64.const 5e-324 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29427,9 +29521,10 @@ end f64.const inf f64.const 1 + call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29441,9 +29536,10 @@ end f64.const 1 f64.const inf + call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29455,9 +29551,10 @@ end f64.const inf f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29469,9 +29566,10 @@ end f64.const nan:0x8000000000000 f64.const inf + call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29483,9 +29581,10 @@ end f64.const -inf f64.const 1 + call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29497,9 +29596,10 @@ end f64.const 1 f64.const -inf + call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29511,9 +29611,10 @@ end f64.const -inf f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29525,9 +29626,10 @@ end f64.const nan:0x8000000000000 f64.const -inf + call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29539,9 +29641,10 @@ end f64.const nan:0x8000000000000 f64.const 1 + call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29553,9 +29656,10 @@ end f64.const 1 f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29567,9 +29671,10 @@ end f64.const nan:0x8000000000000 f64.const 0 + call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -29581,9 +29686,10 @@ end f64.const 0 f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_hypot + call $std/math/check i32.eqz if i32.const 0 @@ -30638,9 +30744,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30651,9 +30767,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.log10 f64.const 0.6380137537120029 f64.const -0.2088824063539505 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/log10 + f64.const 0.6380137537120029 + f64.const -0.2088824063539505 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30664,9 +30790,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30677,9 +30813,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30690,9 +30836,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.log10 f64.const 0.9669418327487274 f64.const -0.06120431795716286 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/log10 + f64.const 0.9669418327487274 + f64.const -0.06120431795716286 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30703,9 +30859,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.log10 f64.const -0.17915126198447093 f64.const 0.39090874791145325 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/log10 + f64.const -0.17915126198447093 + f64.const 0.39090874791145325 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30716,9 +30882,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30729,9 +30905,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.log10 f64.const -0.25044938407454437 f64.const -0.3046841621398926 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/log10 + f64.const -0.25044938407454437 + f64.const -0.3046841621398926 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30742,9 +30928,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.log10 f64.const -0.11117359349943837 f64.const -0.31503361463546753 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/log10 + f64.const -0.11117359349943837 + f64.const -0.31503361463546753 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30755,9 +30951,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30768,9 +30974,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.log10 f64.const -inf f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/log10 + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30781,9 +30997,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.log10 f64.const -inf f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/log10 + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30794,9 +31020,19 @@ unreachable end f64.const -7.888609052210118e-31 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30807,9 +31043,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.log10 f64.const 0 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/log10 + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30820,9 +31066,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30833,9 +31089,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.log10 f64.const inf f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/log10 + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30846,9 +31112,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30859,9 +31135,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30872,9 +31158,10 @@ unreachable end f32.const -8.066848754882812 + call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -30885,9 +31172,10 @@ unreachable end f32.const 4.345239639282227 + call $~lib/math/NativeMathf.log10 f32.const 0.6380137205123901 f32.const -0.20476758480072021 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -30898,9 +31186,10 @@ unreachable end f32.const -8.381433486938477 + call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -30911,9 +31200,10 @@ unreachable end f32.const -6.531673431396484 + call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -30924,9 +31214,10 @@ unreachable end f32.const 9.267057418823242 + call $~lib/math/NativeMathf.log10 f32.const 0.9669418334960938 f32.const -0.34273025393486023 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -30937,9 +31228,10 @@ unreachable end f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.log10 f32.const -0.1791512817144394 f32.const -0.27078554034233093 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -30950,9 +31242,10 @@ unreachable end f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -30963,9 +31256,10 @@ unreachable end f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.log10 f32.const -0.25044935941696167 f32.const 0.2126826047897339 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -30976,9 +31270,10 @@ unreachable end f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.log10 f32.const -0.1111735999584198 f32.const 0.46515095233917236 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -30989,9 +31284,10 @@ unreachable end f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -31002,9 +31298,10 @@ unreachable end f32.const 0 + call $~lib/math/NativeMathf.log10 f32.const -inf f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -31015,9 +31312,10 @@ unreachable end f32.const -0 + call $~lib/math/NativeMathf.log10 f32.const -inf f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -31028,9 +31326,10 @@ unreachable end f32.const -7.888609052210118e-31 + call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -31041,9 +31340,10 @@ unreachable end f32.const 1 + call $~lib/math/NativeMathf.log10 f32.const 0 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -31054,9 +31354,10 @@ unreachable end f32.const -1 + call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -31067,9 +31368,10 @@ unreachable end f32.const inf + call $~lib/math/NativeMathf.log10 f32.const inf f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -31080,9 +31382,10 @@ unreachable end f32.const -inf + call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -31093,9 +31396,10 @@ unreachable end f32.const nan:0x400000 + call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/test_log10f + call $std/math/check i32.eqz if i32.const 0 @@ -37765,8 +38069,10 @@ end f32.const -8.066848754882812 f32.const 4.535662651062012 + call $~lib/math/NativeMathf.mod f32.const -3.531186103820801 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37778,8 +38084,10 @@ end f32.const 4.345239639282227 f32.const -8.887990951538086 + call $~lib/math/NativeMathf.mod f32.const 4.345239639282227 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37791,8 +38099,10 @@ end f32.const -8.381433486938477 f32.const -2.7636072635650635 + call $~lib/math/NativeMathf.mod f32.const -0.09061169624328613 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37804,8 +38114,10 @@ end f32.const -6.531673431396484 f32.const 4.567535400390625 + call $~lib/math/NativeMathf.mod f32.const -1.9641380310058594 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37817,8 +38129,10 @@ end f32.const 9.267057418823242 f32.const 4.811392307281494 + call $~lib/math/NativeMathf.mod f32.const 4.455665111541748 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37830,8 +38144,10 @@ end f32.const -6.450045585632324 f32.const 0.6620717644691467 + call $~lib/math/NativeMathf.mod f32.const -0.49139970541000366 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37843,8 +38159,10 @@ end f32.const 7.858890056610107 f32.const 0.052154526114463806 + call $~lib/math/NativeMathf.mod f32.const 0.0357111394405365 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37856,8 +38174,10 @@ end f32.const -0.7920545339584351 f32.const 7.676402568817139 + call $~lib/math/NativeMathf.mod f32.const -0.7920545339584351 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37869,8 +38189,10 @@ end f32.const 0.6157026886940002 f32.const 2.0119025707244873 + call $~lib/math/NativeMathf.mod f32.const 0.6157026886940002 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37882,8 +38204,10 @@ end f32.const -0.5587586760520935 f32.const 0.03223983198404312 + call $~lib/math/NativeMathf.mod f32.const -0.010681532323360443 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37895,8 +38219,10 @@ end f32.const 0 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const 0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37908,8 +38234,10 @@ end f32.const -0 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37921,8 +38249,10 @@ end f32.const 0.5 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const 0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37934,8 +38264,10 @@ end f32.const -0.5 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37947,8 +38279,10 @@ end f32.const 1 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const 0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37960,8 +38294,10 @@ end f32.const -1 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37973,8 +38309,10 @@ end f32.const 1.5 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const 0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37986,8 +38324,10 @@ end f32.const -1.5 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37999,8 +38339,10 @@ end f32.const 2 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const 0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38012,8 +38354,10 @@ end f32.const -2 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38025,8 +38369,10 @@ end f32.const inf f32.const 1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38038,8 +38384,10 @@ end f32.const -inf f32.const 1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38051,8 +38399,10 @@ end f32.const nan:0x400000 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38064,8 +38414,10 @@ end f32.const 0 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const 0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38077,8 +38429,10 @@ end f32.const -0 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38090,8 +38444,10 @@ end f32.const 0.5 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const 0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38103,8 +38459,10 @@ end f32.const -0.5 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38116,8 +38474,10 @@ end f32.const 1 f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const 0 f32.const 0 - call $std/math/test_modf + call $std/math/check i32.eqz if i32.const 0 @@ -38129,8 +38489,10 @@ end f32.const -1 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38142,8 +38504,10 @@ end f32.const 1.5 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const 0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38155,8 +38519,10 @@ end f32.const -1.5 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38168,8 +38534,10 @@ end f32.const 2 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const 0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38181,8 +38549,10 @@ end f32.const -2 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38194,8 +38564,10 @@ end f32.const inf f32.const -1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38207,8 +38579,10 @@ end f32.const -inf f32.const -1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38220,8 +38594,10 @@ end f32.const nan:0x400000 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38233,8 +38609,10 @@ end f32.const 0 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38246,8 +38624,10 @@ end f32.const 0 f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38259,8 +38639,10 @@ end f32.const 0 f32.const inf + call $~lib/math/NativeMathf.mod f32.const 0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38272,8 +38654,10 @@ end f32.const 0 f32.const -inf + call $~lib/math/NativeMathf.mod f32.const 0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38285,8 +38669,10 @@ end f32.const 0 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38298,8 +38684,10 @@ end f32.const -0 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38311,8 +38699,10 @@ end f32.const -0 f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38324,8 +38714,10 @@ end f32.const -0 f32.const inf + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38337,8 +38729,10 @@ end f32.const -0 f32.const -inf + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38350,8 +38744,10 @@ end f32.const -0 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38363,8 +38759,10 @@ end f32.const 1 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38376,8 +38774,10 @@ end f32.const -1 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38389,8 +38789,10 @@ end f32.const inf f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38402,8 +38804,10 @@ end f32.const -inf f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38415,8 +38819,10 @@ end f32.const nan:0x400000 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38428,8 +38834,10 @@ end f32.const -1 f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38441,8 +38849,10 @@ end f32.const inf f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38454,8 +38864,10 @@ end f32.const -inf f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38467,8 +38879,10 @@ end f32.const nan:0x400000 f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38480,8 +38894,10 @@ end f32.const inf f32.const 2 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38493,8 +38909,10 @@ end f32.const inf f32.const -0.5 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38506,8 +38924,10 @@ end f32.const inf f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38519,8 +38939,10 @@ end f32.const -inf f32.const 2 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38532,8 +38954,10 @@ end f32.const -inf f32.const -0.5 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38545,8 +38969,10 @@ end f32.const -inf f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38558,8 +38984,10 @@ end f32.const nan:0x400000 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38571,8 +38999,10 @@ end f32.const 1 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38584,8 +39014,10 @@ end f32.const -1 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38597,8 +39029,10 @@ end f32.const 1 f32.const inf + call $~lib/math/NativeMathf.mod f32.const 1 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38610,8 +39044,10 @@ end f32.const -1 f32.const inf + call $~lib/math/NativeMathf.mod f32.const -1 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38623,8 +39059,10 @@ end f32.const inf f32.const inf + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38636,8 +39074,10 @@ end f32.const -inf f32.const inf + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38649,8 +39089,10 @@ end f32.const 1 f32.const -inf + call $~lib/math/NativeMathf.mod f32.const 1 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38662,8 +39104,10 @@ end f32.const -1 f32.const -inf + call $~lib/math/NativeMathf.mod f32.const -1 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38675,8 +39119,10 @@ end f32.const inf f32.const -inf + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38688,8 +39134,10 @@ end f32.const -inf f32.const -inf + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38701,8 +39149,10 @@ end f32.const 1.75 f32.const 0.5 + call $~lib/math/NativeMathf.mod f32.const 0.25 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38714,8 +39164,10 @@ end f32.const -1.75 f32.const 0.5 + call $~lib/math/NativeMathf.mod f32.const -0.25 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38727,8 +39179,10 @@ end f32.const 1.75 f32.const -0.5 + call $~lib/math/NativeMathf.mod f32.const 0.25 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38740,8 +39194,10 @@ end f32.const -1.75 f32.const -0.5 + call $~lib/math/NativeMathf.mod f32.const -0.25 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 564f94918e..5079d78e9e 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -174,16 +174,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1440 i32.load i32.gt_u @@ -195,7 +195,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -211,26 +211,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -339,8 +339,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -348,11 +346,12 @@ 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 $2 local.get $3 i32.const 4 @@ -360,6 +359,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -371,17 +371,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -587,7 +587,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -595,6 +594,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -610,7 +610,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -618,6 +617,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -672,11 +672,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -700,11 +700,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -864,17 +864,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -934,15 +934,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1070,12 +1070,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1157,11 +1155,63 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $start:std/new (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + memory.size + i32.const 16 + i32.shl + i32.const 17860 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1213,20 +1263,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if - i32.const 4 memory.size - local.tee $0 + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $1 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1235,18 +1286,16 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $0 - local.get $2 + local.tee $0 local.get $0 - local.get $2 - i32.gt_s + local.get $1 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $0 memory.grow i32.const 0 i32.lt_s @@ -1254,15 +1303,15 @@ unreachable end end + local.get $2 local.get $1 - local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1289,12 +1338,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $2 + local.tee $1 i32.const -4 i32.and i32.const 28 @@ -1304,7 +1353,7 @@ i32.ge_u if local.get $0 - local.get $2 + local.get $1 i32.const 2 i32.and i32.const 28 @@ -1313,19 +1362,19 @@ local.get $0 i32.const 32 i32.add - local.tee $2 + local.tee $1 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 local.get $2 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $2 + local.get $1 i32.const -2 i32.and i32.store @@ -1356,26 +1405,26 @@ i32.const 8 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 + local.get $3 local.get $0 - local.get $1 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1390,42 +1439,65 @@ local.get $0 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $0 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $4 + local.get $1 + i32.store + local.get $1 + i32.const 1 + i32.store + local.get $1 + f32.const 2 + f32.store offset=4 + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.add + i32.store + local.get $1 + f32.const 3 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + global.set $std/new/aClass ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1457,82 +1529,6 @@ unreachable ) (func $~start - (local $0 i32) - memory.size - i32.const 16 - i32.shl - i32.const 17860 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1476 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 1 - i32.store - local.get $0 - f32.const 2 - f32.store offset=4 - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.add - i32.store - local.get $0 - f32.const 3 - f32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $std/new/aClass + call $start:std/new ) ) diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 14c652d58d..ffd1f42363 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -43,7 +43,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -57,18 +57,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -76,20 +73,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -102,33 +99,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 099c5f590d..ba8ff9c7c8 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -233,16 +233,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1520 i32.load i32.gt_u @@ -254,7 +254,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1524 @@ -270,26 +270,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -398,8 +398,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -407,11 +405,12 @@ 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 $2 local.get $3 i32.const 4 @@ -419,6 +418,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -430,17 +430,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -646,7 +646,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -654,6 +653,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -669,7 +669,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -677,6 +676,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -731,11 +731,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -759,11 +759,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -923,17 +923,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -993,15 +993,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1129,12 +1129,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1272,20 +1270,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1294,18 +1293,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1313,15 +1310,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1348,12 +1345,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1363,7 +1360,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1372,19 +1369,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1415,26 +1412,26 @@ i32.const 8 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1449,42 +1446,42 @@ local.get $1 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $0 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 ) (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2136,23 +2133,23 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/a2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/a1 local.tee $1 + global.get $std/operator-overloading/a1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/a2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.add local.get $1 - i32.load offset=4 + i32.load + i32.add local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.add call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/a @@ -2186,23 +2183,23 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/s2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/s1 local.tee $1 + global.get $std/operator-overloading/s1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/s2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.sub local.get $1 - i32.load offset=4 + i32.load + i32.sub local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.sub call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/s @@ -2234,23 +2231,23 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/m2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/m1 local.tee $1 + global.get $std/operator-overloading/m1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/m2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.mul local.get $1 - i32.load offset=4 + i32.load + i32.mul local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.mul call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/m @@ -2284,23 +2281,23 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/d2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/d1 local.tee $1 + global.get $std/operator-overloading/d1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/d2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.div_s local.get $1 - i32.load offset=4 + i32.load + i32.div_s local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.div_s call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/d @@ -2334,23 +2331,23 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/f2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/f1 local.tee $1 + global.get $std/operator-overloading/f1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/f2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.rem_s local.get $1 - i32.load offset=4 + i32.load + i32.rem_s local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.rem_s call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/f @@ -2381,23 +2378,23 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/p2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/p1 local.tee $1 + global.get $std/operator-overloading/p1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/p2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - call $~lib/math/ipow32 local.get $1 - i32.load offset=4 + i32.load + call $~lib/math/ipow32 local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 call $~lib/math/ipow32 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/p @@ -2431,23 +2428,23 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/n2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/n1 local.tee $1 + global.get $std/operator-overloading/n1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/n2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.and local.get $1 - i32.load offset=4 + i32.load + i32.and local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.and call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/n @@ -2481,23 +2478,23 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/o2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/o1 local.tee $1 + global.get $std/operator-overloading/o1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/o2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.or local.get $1 - i32.load offset=4 + i32.load + i32.or local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.or call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/o @@ -2531,23 +2528,23 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/x2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/x1 local.tee $1 + global.get $std/operator-overloading/x1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/x2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.xor local.get $1 - i32.load offset=4 + i32.load + i32.xor local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.xor call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/x @@ -2581,24 +2578,24 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/eq2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/eq1 local.tee $1 + global.get $std/operator-overloading/eq1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/eq2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load + local.get $1 + i32.load i32.eq if (result i32) - local.get $1 - i32.load offset=4 local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.eq else i32.const 0 @@ -2624,24 +2621,24 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/eq4 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/eq3 local.tee $1 + global.get $std/operator-overloading/eq3 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/eq4 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load + local.get $1 + i32.load i32.eq if (result i32) - local.get $1 - i32.load offset=4 local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.eq else i32.const 0 @@ -2657,24 +2654,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/eq1 local.tee $1 + global.get $std/operator-overloading/eq1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/eq2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load + local.get $1 + i32.load i32.ne if (result i32) - local.get $1 - i32.load offset=4 local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.ne else i32.const 0 @@ -2690,24 +2687,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/eq3 local.tee $1 + global.get $std/operator-overloading/eq3 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/eq4 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load + local.get $1 + i32.load i32.ne if (result i32) - local.get $1 - i32.load offset=4 local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.ne else i32.const 0 @@ -2733,24 +2730,24 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/gt2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/gt1 local.tee $1 + global.get $std/operator-overloading/gt1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/gt2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load + local.get $1 + i32.load i32.gt_s if (result i32) - local.get $1 - i32.load offset=4 local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.gt_s else i32.const 0 @@ -2776,24 +2773,24 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/gte2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/gte1 local.tee $1 + global.get $std/operator-overloading/gte1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/gte2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load + local.get $1 + i32.load i32.ge_s if (result i32) - local.get $1 - i32.load offset=4 local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.ge_s else i32.const 0 @@ -2819,24 +2816,24 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/le2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/le1 local.tee $1 + global.get $std/operator-overloading/le1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/le2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load + local.get $1 + i32.load i32.lt_s if (result i32) - local.get $1 - i32.load offset=4 local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.lt_s else i32.const 0 @@ -2862,24 +2859,24 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/leq2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/leq1 local.tee $1 + global.get $std/operator-overloading/leq1 + local.tee $0 i32.store - local.get $0 + local.get $1 global.get $std/operator-overloading/leq2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load + local.get $1 + i32.load i32.le_s if (result i32) - local.get $1 - i32.load offset=4 local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.le_s else i32.const 0 @@ -3389,18 +3386,18 @@ call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais1 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/ais1 local.tee $1 + global.get $std/operator-overloading/ais1 + local.tee $0 i32.store - local.get $0 local.get $1 + local.get $0 i32.store offset=8 - local.get $1 + local.get $0 i32.load i32.const 1 i32.add - local.get $1 + local.get $0 i32.load offset=4 i32.const 1 i32.add @@ -3411,23 +3408,23 @@ call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/ais1 local.tee $1 + global.get $std/operator-overloading/ais1 + local.tee $0 i32.store offset=12 - local.get $0 + local.get $1 global.get $std/operator-overloading/ais2 - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $1 - i32.load local.get $0 i32.load - i32.add local.get $1 - i32.load offset=4 + i32.load + i32.add local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais @@ -3475,23 +3472,23 @@ call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii2 global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/operator-overloading/aii1 local.tee $1 + global.get $std/operator-overloading/aii1 + local.tee $0 i32.store offset=8 - local.get $0 + local.get $1 global.get $std/operator-overloading/aii2 - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $1 - i32.load local.get $0 i32.load - i32.add local.get $1 - i32.load offset=4 + i32.load + i32.add local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index f20ac84049..e440a71518 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -180,29 +180,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $3 i32.const 2 i32.add + local.tee $2 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $2 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $1 - local.get $3 local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $3 + i32.load8_u + i32.store8 local.get $4 i32.const 3 i32.sub @@ -460,143 +458,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -623,63 +607,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -706,23 +684,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $2 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -861,8 +837,8 @@ global.get $std/pointer/one local.tee $0 global.set $std/pointer/nextOne - local.get $0 global.get $std/pointer/nextOne + local.get $0 i32.ne if i32.const 0 @@ -1071,11 +1047,11 @@ local.get $4 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 local.get $4 i32.const 1 i32.sub local.tee $4 + local.get $1 i32.add local.get $0 local.get $4 @@ -1090,11 +1066,11 @@ i32.const 8 i32.ge_u if - local.get $1 local.get $4 i32.const 8 i32.sub local.tee $4 + local.get $1 i32.add local.get $0 local.get $4 @@ -1108,11 +1084,11 @@ loop $while-continue|5 local.get $4 if - local.get $1 local.get $4 i32.const 1 i32.sub local.tee $4 + local.get $1 i32.add local.get $0 local.get $4 diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 7219b28627..c389f66592 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -356,8 +356,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -365,11 +363,12 @@ 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 $2 local.get $3 i32.const 4 @@ -377,6 +376,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -388,17 +388,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -604,7 +604,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -612,6 +611,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -627,7 +627,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -635,6 +634,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -689,11 +689,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -717,11 +717,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -881,17 +881,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -951,15 +951,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1087,12 +1087,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1132,13 +1130,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1178,10 +1176,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1190,7 +1188,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1199,6 +1196,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1212,12 +1210,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1230,7 +1228,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1239,6 +1236,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1445,12 +1443,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1466,14 +1464,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1487,14 +1485,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1505,14 +1504,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1520,19 +1518,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1540,17 +1540,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1560,18 +1559,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1579,18 +1576,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1601,8 +1598,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1615,13 +1612,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1634,54 +1631,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1691,37 +1688,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1729,7 +1726,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -2258,29 +2255,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2302,25 +2297,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2393,25 +2388,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2480,25 +2475,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2538,143 +2533,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2701,63 +2682,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2784,23 +2759,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2861,7 +2834,7 @@ local.get $1 local.get $0 i32.load offset=8 - local.tee $9 + local.tee $8 local.get $2 i32.shr_u i32.gt_u @@ -2881,7 +2854,7 @@ end local.get $0 i32.load - local.set $7 + local.set $4 local.get $1 i32.const 8 local.get $1 @@ -2890,33 +2863,34 @@ select local.get $2 i32.shl - local.set $6 - block $__inlined_func$~lib/rt/itcms/__renew + local.set $1 + block $__inlined_func$~lib/rt/itcms/__renew (result i32) local.get $3 - if - local.get $9 + if (result i32) + local.get $8 i32.const 1 i32.shl - local.tee $1 + local.tee $2 i32.const 1073741820 - local.get $1 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $1 - local.get $6 + local.tee $2 local.get $1 - local.get $6 - i32.gt_u + local.get $1 + local.get $2 + i32.lt_u select - local.set $6 + else + local.get $1 end - local.get $6 - local.get $7 - local.tee $1 + local.tee $6 + local.get $4 + local.tee $2 i32.const 20 i32.sub - local.tee $2 + local.tee $1 i32.load i32.const -4 i32.and @@ -2924,107 +2898,109 @@ i32.sub i32.le_u if - local.get $2 + local.get $1 local.get $6 i32.store offset=16 + local.get $2 br $__inlined_func$~lib/rt/itcms/__renew end local.get $6 - local.get $2 + local.get $1 i32.load offset=12 call $~lib/rt/itcms/__new + local.tee $9 local.set $3 local.get $6 - local.get $2 + local.get $1 i32.load offset=16 - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 local.get $6 i32.gt_u select - local.set $8 + local.set $7 block $~lib/util/memory/memmove|inlined.0 local.get $3 - local.tee $2 - local.get $1 + local.get $2 + local.tee $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - local.get $2 + local.get $3 i32.sub - local.get $8 + local.get $7 i32.sub i32.const 0 - local.get $8 + local.get $7 i32.const 1 i32.shl i32.sub i32.le_u if - local.get $2 + local.get $3 local.get $1 - local.get $8 + local.get $7 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end local.get $1 - local.get $2 + local.get $3 i32.gt_u if local.get $1 i32.const 7 i32.and - local.get $2 + local.get $3 i32.const 7 i32.and i32.eq if loop $while-continue|0 - local.get $2 + local.get $3 i32.const 7 i32.and if - local.get $8 + local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 - local.get $2 - local.tee $4 + local.set $7 + local.get $3 + local.tee $5 i32.const 1 i32.add - local.set $2 + local.set $3 local.get $1 - local.tee $5 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $5 + local.get $4 i32.load8_u i32.store8 br $while-continue|0 end end loop $while-continue|1 - local.get $8 + local.get $7 i32.const 8 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i64.load i64.store - local.get $8 + local.get $7 i32.const 8 i32.sub - local.set $8 - local.get $2 + local.set $7 + local.get $3 i32.const 8 i32.add - local.set $2 + local.set $3 local.get $1 i32.const 8 i32.add @@ -3034,26 +3010,26 @@ end end loop $while-continue|2 - local.get $8 + local.get $7 if - local.get $2 - local.tee $4 + local.get $3 + local.tee $5 i32.const 1 i32.add - local.set $2 + local.set $3 local.get $1 - local.tee $5 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $5 + local.get $4 i32.load8_u i32.store8 - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 + local.set $7 br $while-continue|2 end end @@ -3061,29 +3037,29 @@ local.get $1 i32.const 7 i32.and - local.get $2 + local.get $3 i32.const 7 i32.and i32.eq if loop $while-continue|3 - local.get $2 - local.get $8 + local.get $3 + local.get $7 i32.add i32.const 7 i32.and if - local.get $8 + local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.get $8 + local.get $3 + local.get $7 i32.const 1 i32.sub - local.tee $8 + local.tee $7 i32.add local.get $1 - local.get $8 + local.get $7 i32.add i32.load8_u i32.store8 @@ -3091,18 +3067,18 @@ end end loop $while-continue|4 - local.get $8 + local.get $7 i32.const 8 i32.ge_u if - local.get $2 - local.get $8 + local.get $3 + local.get $7 i32.const 8 i32.sub - local.tee $8 + local.tee $7 i32.add local.get $1 - local.get $8 + local.get $7 i32.add i64.load i64.store @@ -3111,16 +3087,16 @@ end end loop $while-continue|5 - local.get $8 + local.get $7 if - local.get $2 - local.get $8 + local.get $3 + local.get $7 i32.const 1 i32.sub - local.tee $8 + local.tee $7 i32.add local.get $1 - local.get $8 + local.get $7 i32.add i32.load8_u i32.store8 @@ -3129,18 +3105,17 @@ end end end - local.get $3 - local.set $1 + local.get $9 end - local.get $1 - local.get $9 + local.tee $1 + local.get $8 i32.add local.get $6 - local.get $9 + local.get $8 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $7 + local.get $2 i32.ne if local.get $0 @@ -3160,10 +3135,10 @@ ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -3188,18 +3163,18 @@ local.get $3 i32.store offset=12 end + local.get $1 local.get $0 i32.load offset=4 - local.get $1 i32.add local.get $2 i32.store8 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -3208,9 +3183,9 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 i32.load offset=4 - local.get $1 i32.add i32.load8_s ) @@ -3387,19 +3362,19 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor local.tee $2 i32.store @@ -3786,9 +3761,9 @@ global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i32.const 0 i32.store local.get $2 @@ -3797,41 +3772,41 @@ local.get $2 i32.load offset=16 local.tee $11 - local.set $4 - local.get $7 + local.set $5 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $3 i32.const 0 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 1073741820 i32.gt_u if @@ -3843,61 +3818,61 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 8 - local.get $4 + local.get $5 i32.const 8 i32.gt_u select local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $8 call $~lib/memory/memory.fill - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store - local.get $1 - local.get $5 + local.get $3 + local.get $6 call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store offset=4 - local.get $1 + local.get $3 local.get $8 i32.store offset=8 - local.get $1 - local.get $4 + local.get $3 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $1 + local.get $3 i32.store loop $for-loop|0 - local.get $6 + local.get $7 local.get $11 i32.lt_s if local.get $10 - local.get $6 + local.get $7 i32.const 3 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $3 local.get $0 - local.get $4 + local.get $1 i32.load8_s call $~lib/array/Array#__set local.get $0 @@ -3905,19 +3880,19 @@ i32.add local.set $0 end - local.get $6 + local.get $7 i32.const 1 i32.add - local.set $6 + local.set $7 br $for-loop|0 end end - local.get $1 + local.get $3 local.get $0 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -3925,20 +3900,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $9 - local.get $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $1 i32.store offset=8 loop $for-loop|4 + local.get $4 local.get $3 - local.get $1 i32.load offset=12 i32.lt_s if - local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get local.tee $6 i32.extend8_s @@ -3980,8 +3955,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find11 - loop $while-continue|012 + block $__inlined_func$~lib/set/Set#find10 + loop $while-continue|011 local.get $0 if local.get $0 @@ -3999,12 +3974,12 @@ i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find11 + br_if $__inlined_func$~lib/set/Set#find10 local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|012 + br $while-continue|011 end end i32.const 0 @@ -4020,19 +3995,19 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|4 end end - local.get $4 + local.get $1 i32.load offset=20 local.get $2 i32.load offset=20 @@ -4046,9 +4021,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|6 - local.get $3 + local.get $4 i32.extend8_s i32.const 50 i32.lt_s @@ -4057,7 +4032,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -4092,13 +4067,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find14 - loop $while-continue|015 + block $__inlined_func$~lib/set/Set#find13 + loop $while-continue|014 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -4106,17 +4081,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find14 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find13 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|015 + br $while-continue|014 end end i32.const 0 @@ -4133,13 +4108,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -4174,13 +4149,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find17 - loop $while-continue|018 + block $__inlined_func$~lib/set/Set#find16 + loop $while-continue|017 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -4188,17 +4163,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find17 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find16 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|018 + br $while-continue|017 end end i32.const 0 @@ -4213,10 +4188,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|6 end end @@ -4233,9 +4208,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|8 - local.get $3 + local.get $4 i32.extend8_s i32.const 50 i32.lt_s @@ -4244,7 +4219,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -4279,13 +4254,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find20 - loop $while-continue|021 + block $__inlined_func$~lib/set/Set#find19 + loop $while-continue|020 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -4293,17 +4268,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find20 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find19 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|021 + br $while-continue|020 end end i32.const 0 @@ -4319,13 +4294,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#add local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -4360,13 +4335,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find23 - loop $while-continue|024 + block $__inlined_func$~lib/set/Set#find22 + loop $while-continue|023 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -4374,17 +4349,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find23 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find22 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|024 + br $while-continue|023 end end i32.const 0 @@ -4401,13 +4376,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -4442,13 +4417,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find26 - loop $while-continue|027 + block $__inlined_func$~lib/set/Set#find25 + loop $while-continue|026 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -4456,17 +4431,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find26 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find25 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|027 + br $while-continue|026 end end i32.const 0 @@ -4481,10 +4456,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|8 end end @@ -4831,10 +4806,10 @@ end ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -4843,9 +4818,9 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 i32.load offset=4 - local.get $1 i32.add i32.load8_u ) @@ -4992,19 +4967,19 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor local.tee $2 i32.store @@ -5397,9 +5372,9 @@ global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i32.const 0 i32.store local.get $2 @@ -5408,41 +5383,41 @@ local.get $2 i32.load offset=16 local.tee $11 - local.set $4 - local.get $7 + local.set $5 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 6 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $3 i32.const 0 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 1073741820 i32.gt_u if @@ -5454,61 +5429,61 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 8 - local.get $4 + local.get $5 i32.const 8 i32.gt_u select local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $8 call $~lib/memory/memory.fill - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store - local.get $1 - local.get $5 + local.get $3 + local.get $6 call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store offset=4 - local.get $1 + local.get $3 local.get $8 i32.store offset=8 - local.get $1 - local.get $4 + local.get $3 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $1 + local.get $3 i32.store loop $for-loop|0 - local.get $6 + local.get $7 local.get $11 i32.lt_s if local.get $10 - local.get $6 + local.get $7 i32.const 3 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $3 local.get $0 - local.get $4 + local.get $1 i32.load8_u call $~lib/array/Array#__set local.get $0 @@ -5516,19 +5491,19 @@ i32.add local.set $0 end - local.get $6 + local.get $7 i32.const 1 i32.add - local.set $6 + local.set $7 br $for-loop|0 end end - local.get $1 + local.get $3 local.get $0 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -5536,20 +5511,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $9 - local.get $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $1 i32.store offset=8 loop $for-loop|4 + local.get $4 local.get $3 - local.get $1 i32.load offset=12 i32.lt_s if - local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get local.tee $6 i32.const 255 @@ -5592,8 +5567,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find11 - loop $while-continue|012 + block $__inlined_func$~lib/set/Set#find10 + loop $while-continue|011 local.get $0 if local.get $0 @@ -5611,12 +5586,12 @@ i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find11 + br_if $__inlined_func$~lib/set/Set#find10 local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|012 + br $while-continue|011 end end i32.const 0 @@ -5632,19 +5607,19 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|4 end end - local.get $4 + local.get $1 i32.load offset=20 local.get $2 i32.load offset=20 @@ -5658,9 +5633,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|6 - local.get $3 + local.get $4 i32.const 255 i32.and i32.const 50 @@ -5670,7 +5645,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 255 i32.and i32.const -1028477379 @@ -5706,13 +5681,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find14 - loop $while-continue|015 + block $__inlined_func$~lib/set/Set#find13 + loop $while-continue|014 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -5720,17 +5695,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find14 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find13 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|015 + br $while-continue|014 end end i32.const 0 @@ -5747,13 +5722,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 255 i32.and i32.const -1028477379 @@ -5789,13 +5764,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find17 - loop $while-continue|018 + block $__inlined_func$~lib/set/Set#find16 + loop $while-continue|017 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -5803,17 +5778,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find17 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find16 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|018 + br $while-continue|017 end end i32.const 0 @@ -5828,10 +5803,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|6 end end @@ -5848,9 +5823,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|8 - local.get $3 + local.get $4 i32.const 255 i32.and i32.const 50 @@ -5860,7 +5835,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 255 i32.and i32.const -1028477379 @@ -5896,13 +5871,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find20 - loop $while-continue|021 + block $__inlined_func$~lib/set/Set#find19 + loop $while-continue|020 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -5910,17 +5885,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find20 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find19 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|021 + br $while-continue|020 end end i32.const 0 @@ -5936,13 +5911,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#add local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 255 i32.and i32.const -1028477379 @@ -5978,13 +5953,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find23 - loop $while-continue|024 + block $__inlined_func$~lib/set/Set#find22 + loop $while-continue|023 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -5992,17 +5967,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find23 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find22 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|024 + br $while-continue|023 end end i32.const 0 @@ -6019,13 +5994,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 255 i32.and i32.const -1028477379 @@ -6061,13 +6036,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find26 - loop $while-continue|027 + block $__inlined_func$~lib/set/Set#find25 + loop $while-continue|026 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -6075,17 +6050,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $4 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find26 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find25 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|027 + br $while-continue|026 end end i32.const 0 @@ -6100,10 +6075,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|8 end end @@ -6449,10 +6424,10 @@ ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -6487,10 +6462,10 @@ i32.store16 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -6649,19 +6624,19 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor local.tee $2 i32.store @@ -7048,9 +7023,9 @@ global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i32.const 0 i32.store local.get $2 @@ -7059,41 +7034,41 @@ local.get $2 i32.load offset=16 local.tee $11 - local.set $4 - local.get $7 + local.set $5 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $3 i32.const 0 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 536870910 i32.gt_u if @@ -7105,9 +7080,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 8 - local.get $4 + local.get $5 i32.const 8 i32.gt_u select @@ -7116,52 +7091,52 @@ local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $8 call $~lib/memory/memory.fill - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store - local.get $1 - local.get $5 + local.get $3 + local.get $6 call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store offset=4 - local.get $1 + local.get $3 local.get $8 i32.store offset=8 - local.get $1 - local.get $4 + local.get $3 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $1 + local.get $3 i32.store loop $for-loop|0 - local.get $6 + local.get $7 local.get $11 i32.lt_s if local.get $10 - local.get $6 + local.get $7 i32.const 3 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $3 local.get $0 - local.get $4 + local.get $1 i32.load16_s call $~lib/array/Array#__set local.get $0 @@ -7169,19 +7144,19 @@ i32.add local.set $0 end - local.get $6 + local.get $7 i32.const 1 i32.add - local.set $6 + local.set $7 br $for-loop|0 end end - local.get $1 + local.get $3 local.get $0 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -7189,20 +7164,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $9 - local.get $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $1 i32.store offset=8 loop $for-loop|4 + local.get $4 local.get $3 - local.get $1 i32.load offset=12 i32.lt_s if - local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get local.tee $6 i32.extend16_s @@ -7244,8 +7219,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find11 - loop $while-continue|012 + block $__inlined_func$~lib/set/Set#find10 + loop $while-continue|011 local.get $0 if local.get $0 @@ -7263,12 +7238,12 @@ i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find11 + br_if $__inlined_func$~lib/set/Set#find10 local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|012 + br $while-continue|011 end end i32.const 0 @@ -7284,19 +7259,19 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|4 end end - local.get $4 + local.get $1 i32.load offset=20 local.get $2 i32.load offset=20 @@ -7310,9 +7285,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|6 - local.get $3 + local.get $4 i32.extend16_s i32.const 50 i32.lt_s @@ -7321,7 +7296,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -7356,13 +7331,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find14 - loop $while-continue|015 + block $__inlined_func$~lib/set/Set#find13 + loop $while-continue|014 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7370,17 +7345,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find14 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find13 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|015 + br $while-continue|014 end end i32.const 0 @@ -7397,13 +7372,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -7438,13 +7413,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find17 - loop $while-continue|018 + block $__inlined_func$~lib/set/Set#find16 + loop $while-continue|017 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7452,17 +7427,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find17 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find16 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|018 + br $while-continue|017 end end i32.const 0 @@ -7477,10 +7452,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|6 end end @@ -7497,9 +7472,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|8 - local.get $3 + local.get $4 i32.extend16_s i32.const 50 i32.lt_s @@ -7508,7 +7483,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -7543,13 +7518,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find20 - loop $while-continue|021 + block $__inlined_func$~lib/set/Set#find19 + loop $while-continue|020 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7557,17 +7532,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find20 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find19 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|021 + br $while-continue|020 end end i32.const 0 @@ -7583,13 +7558,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#add local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -7624,13 +7599,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find23 - loop $while-continue|024 + block $__inlined_func$~lib/set/Set#find22 + loop $while-continue|023 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7638,17 +7613,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find23 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find22 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|024 + br $while-continue|023 end end i32.const 0 @@ -7665,13 +7640,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -7706,13 +7681,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find26 - loop $while-continue|027 + block $__inlined_func$~lib/set/Set#find25 + loop $while-continue|026 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7720,17 +7695,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find26 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find25 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|027 + br $while-continue|026 end end i32.const 0 @@ -7745,10 +7720,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|8 end end @@ -8095,10 +8070,10 @@ end ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -8258,19 +8233,19 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor local.tee $2 i32.store @@ -8663,9 +8638,9 @@ global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i32.const 0 i32.store local.get $2 @@ -8674,41 +8649,41 @@ local.get $2 i32.load offset=16 local.tee $11 - local.set $4 - local.get $7 + local.set $5 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 10 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $3 i32.const 0 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 536870910 i32.gt_u if @@ -8720,9 +8695,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 8 - local.get $4 + local.get $5 i32.const 8 i32.gt_u select @@ -8731,52 +8706,52 @@ local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $8 call $~lib/memory/memory.fill - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store - local.get $1 - local.get $5 + local.get $3 + local.get $6 call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store offset=4 - local.get $1 + local.get $3 local.get $8 i32.store offset=8 - local.get $1 - local.get $4 + local.get $3 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $1 + local.get $3 i32.store loop $for-loop|0 - local.get $6 + local.get $7 local.get $11 i32.lt_s if local.get $10 - local.get $6 + local.get $7 i32.const 3 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $3 local.get $0 - local.get $4 + local.get $1 i32.load16_u call $~lib/array/Array#__set local.get $0 @@ -8784,19 +8759,19 @@ i32.add local.set $0 end - local.get $6 + local.get $7 i32.const 1 i32.add - local.set $6 + local.set $7 br $for-loop|0 end end - local.get $1 + local.get $3 local.get $0 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -8804,20 +8779,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $9 - local.get $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $1 i32.store offset=8 loop $for-loop|4 + local.get $4 local.get $3 - local.get $1 i32.load offset=12 i32.lt_s if - local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get local.tee $6 i32.const 65535 @@ -8860,8 +8835,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find11 - loop $while-continue|012 + block $__inlined_func$~lib/set/Set#find10 + loop $while-continue|011 local.get $0 if local.get $0 @@ -8879,12 +8854,12 @@ i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find11 + br_if $__inlined_func$~lib/set/Set#find10 local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|012 + br $while-continue|011 end end i32.const 0 @@ -8900,19 +8875,19 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|4 end end - local.get $4 + local.get $1 i32.load offset=20 local.get $2 i32.load offset=20 @@ -8926,9 +8901,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|6 - local.get $3 + local.get $4 i32.const 65535 i32.and i32.const 50 @@ -8938,7 +8913,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 65535 i32.and i32.const -1028477379 @@ -8974,13 +8949,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find14 - loop $while-continue|015 + block $__inlined_func$~lib/set/Set#find13 + loop $while-continue|014 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -8988,17 +8963,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find14 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find13 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|015 + br $while-continue|014 end end i32.const 0 @@ -9015,13 +8990,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 65535 i32.and i32.const -1028477379 @@ -9057,13 +9032,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find17 - loop $while-continue|018 + block $__inlined_func$~lib/set/Set#find16 + loop $while-continue|017 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -9071,17 +9046,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find17 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find16 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|018 + br $while-continue|017 end end i32.const 0 @@ -9096,10 +9071,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|6 end end @@ -9116,9 +9091,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|8 - local.get $3 + local.get $4 i32.const 65535 i32.and i32.const 50 @@ -9128,7 +9103,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 65535 i32.and i32.const -1028477379 @@ -9164,13 +9139,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find20 - loop $while-continue|021 + block $__inlined_func$~lib/set/Set#find19 + loop $while-continue|020 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -9178,17 +9153,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find20 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find19 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|021 + br $while-continue|020 end end i32.const 0 @@ -9204,13 +9179,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#add local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 65535 i32.and i32.const -1028477379 @@ -9246,13 +9221,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find23 - loop $while-continue|024 + block $__inlined_func$~lib/set/Set#find22 + loop $while-continue|023 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -9260,17 +9235,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find23 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find22 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|024 + br $while-continue|023 end end i32.const 0 @@ -9287,13 +9262,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const 65535 i32.and i32.const -1028477379 @@ -9329,13 +9304,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find26 - loop $while-continue|027 + block $__inlined_func$~lib/set/Set#find25 + loop $while-continue|026 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -9343,17 +9318,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $4 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/set/Set#find26 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find25 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|027 + br $while-continue|026 end end i32.const 0 @@ -9368,10 +9343,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|8 end end @@ -9713,10 +9688,10 @@ ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -9751,10 +9726,10 @@ i32.store ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -9910,19 +9885,19 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor local.tee $2 i32.store @@ -10295,9 +10270,9 @@ global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i32.const 0 i32.store local.get $2 @@ -10306,41 +10281,41 @@ local.get $2 i32.load offset=16 local.tee $11 - local.set $4 - local.get $7 + local.set $5 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 12 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $3 i32.const 0 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 268435455 i32.gt_u if @@ -10352,9 +10327,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 8 - local.get $4 + local.get $5 i32.const 8 i32.gt_u select @@ -10363,52 +10338,52 @@ local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $8 call $~lib/memory/memory.fill - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store - local.get $1 - local.get $5 + local.get $3 + local.get $6 call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store offset=4 - local.get $1 + local.get $3 local.get $8 i32.store offset=8 - local.get $1 - local.get $4 + local.get $3 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $1 + local.get $3 i32.store loop $for-loop|01 - local.get $6 + local.get $7 local.get $11 i32.lt_s if local.get $10 - local.get $6 + local.get $7 i32.const 3 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $3 local.get $0 - local.get $4 + local.get $1 i32.load call $~lib/array/Array#__set local.get $0 @@ -10416,19 +10391,19 @@ i32.add local.set $0 end - local.get $6 + local.get $7 i32.const 1 i32.add - local.set $6 + local.set $7 br $for-loop|01 end end - local.get $1 + local.get $3 local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -10436,20 +10411,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $9 - local.get $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $1 i32.store offset=8 loop $for-loop|2 + local.get $4 local.get $3 - local.get $1 i32.load offset=12 i32.lt_s if - local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get local.tee $6 i32.const -1028477379 @@ -10490,8 +10465,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find11 - loop $while-continue|012 + block $__inlined_func$~lib/set/Set#find10 + loop $while-continue|011 local.get $0 if local.get $0 @@ -10507,12 +10482,12 @@ i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find11 + br_if $__inlined_func$~lib/set/Set#find10 local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|012 + br $while-continue|011 end end i32.const 0 @@ -10528,19 +10503,19 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|2 end end - local.get $4 + local.get $1 i32.load offset=20 local.get $2 i32.load offset=20 @@ -10554,9 +10529,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|3 - local.get $3 + local.get $4 i32.const 50 i32.lt_s if @@ -10564,7 +10539,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10598,29 +10573,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find14 - loop $while-continue|015 + block $__inlined_func$~lib/set/Set#find13 + loop $while-continue|014 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find14 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find13 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|015 + br $while-continue|014 end end i32.const 0 @@ -10637,13 +10612,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10677,29 +10652,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find17 - loop $while-continue|018 + block $__inlined_func$~lib/set/Set#find16 + loop $while-continue|017 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find17 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find16 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|018 + br $while-continue|017 end end i32.const 0 @@ -10714,10 +10689,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|3 end end @@ -10734,9 +10709,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|4 - local.get $3 + local.get $4 i32.const 50 i32.lt_s if @@ -10744,7 +10719,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10778,29 +10753,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find20 - loop $while-continue|021 + block $__inlined_func$~lib/set/Set#find19 + loop $while-continue|020 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find20 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find19 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|021 + br $while-continue|020 end end i32.const 0 @@ -10816,13 +10791,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#add local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10856,29 +10831,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find23 - loop $while-continue|024 + block $__inlined_func$~lib/set/Set#find22 + loop $while-continue|023 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find23 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find22 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|024 + br $while-continue|023 end end i32.const 0 @@ -10895,13 +10870,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10935,29 +10910,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find26 - loop $while-continue|027 + block $__inlined_func$~lib/set/Set#find25 + loop $while-continue|026 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find26 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find25 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|027 + br $while-continue|026 end end i32.const 0 @@ -10972,10 +10947,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|4 end end @@ -11316,10 +11291,10 @@ end ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -11475,19 +11450,19 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor local.tee $2 i32.store @@ -11860,9 +11835,9 @@ global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i32.const 0 i32.store local.get $2 @@ -11871,41 +11846,41 @@ local.get $2 i32.load offset=16 local.tee $11 - local.set $4 - local.get $7 + local.set $5 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 14 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $3 i32.const 0 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 268435455 i32.gt_u if @@ -11917,9 +11892,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 8 - local.get $4 + local.get $5 i32.const 8 i32.gt_u select @@ -11928,52 +11903,52 @@ local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $8 call $~lib/memory/memory.fill - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store - local.get $1 - local.get $5 + local.get $3 + local.get $6 call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $3 + local.get $6 i32.store offset=4 - local.get $1 + local.get $3 local.get $8 i32.store offset=8 - local.get $1 - local.get $4 + local.get $3 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $1 + local.get $3 i32.store loop $for-loop|01 - local.get $6 + local.get $7 local.get $11 i32.lt_s if local.get $10 - local.get $6 + local.get $7 i32.const 3 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $3 local.get $0 - local.get $4 + local.get $1 i32.load call $~lib/array/Array#__set local.get $0 @@ -11981,19 +11956,19 @@ i32.add local.set $0 end - local.get $6 + local.get $7 i32.const 1 i32.add - local.set $6 + local.set $7 br $for-loop|01 end end - local.get $1 + local.get $3 local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -12001,20 +11976,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $9 - local.get $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $1 i32.store offset=8 loop $for-loop|2 + local.get $4 local.get $3 - local.get $1 i32.load offset=12 i32.lt_s if - local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get local.tee $6 i32.const -1028477379 @@ -12055,8 +12030,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find11 - loop $while-continue|012 + block $__inlined_func$~lib/set/Set#find10 + loop $while-continue|011 local.get $0 if local.get $0 @@ -12072,12 +12047,12 @@ i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find11 + br_if $__inlined_func$~lib/set/Set#find10 local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|012 + br $while-continue|011 end end i32.const 0 @@ -12093,19 +12068,19 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $1 local.get $3 + local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|2 end end - local.get $4 + local.get $1 i32.load offset=20 local.get $2 i32.load offset=20 @@ -12119,9 +12094,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|3 - local.get $3 + local.get $4 i32.const 50 i32.lt_u if @@ -12129,7 +12104,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12163,29 +12138,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find14 - loop $while-continue|015 + block $__inlined_func$~lib/set/Set#find13 + loop $while-continue|014 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find14 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find13 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|015 + br $while-continue|014 end end i32.const 0 @@ -12202,13 +12177,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12242,29 +12217,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find17 - loop $while-continue|018 + block $__inlined_func$~lib/set/Set#find16 + loop $while-continue|017 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find17 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find16 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|018 + br $while-continue|017 end end i32.const 0 @@ -12279,10 +12254,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|3 end end @@ -12299,9 +12274,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $4 loop $for-loop|4 - local.get $3 + local.get $4 i32.const 50 i32.lt_u if @@ -12309,7 +12284,7 @@ i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12343,29 +12318,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find20 - loop $while-continue|021 + block $__inlined_func$~lib/set/Set#find19 + loop $while-continue|020 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find20 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find19 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|021 + br $while-continue|020 end end i32.const 0 @@ -12381,13 +12356,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#add local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12421,29 +12396,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find23 - loop $while-continue|024 + block $__inlined_func$~lib/set/Set#find22 + loop $while-continue|023 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find23 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find22 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|024 + br $while-continue|023 end end i32.const 0 @@ -12460,13 +12435,13 @@ unreachable end local.get $2 - local.get $3 + local.get $4 call $~lib/set/Set#delete local.get $2 i32.load local.get $2 i32.load offset=4 - local.get $3 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12500,29 +12475,29 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find26 - loop $while-continue|027 + block $__inlined_func$~lib/set/Set#find25 + loop $while-continue|026 local.get $0 if local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/set/Set#find26 - local.get $4 + br_if $__inlined_func$~lib/set/Set#find25 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|027 + br $while-continue|026 end end i32.const 0 @@ -12537,10 +12512,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|4 end end @@ -12991,10 +12966,10 @@ ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if local.get $1 i32.const 0 @@ -13029,10 +13004,10 @@ i64.store ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -13215,9 +13190,9 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 i64) + (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) @@ -13231,29 +13206,29 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|0 - local.get $1 + local.get $3 i64.const 100 i64.lt_s if - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -13263,11 +13238,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#add - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -13278,14 +13253,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i64.const 1 i64.add - local.set $1 + local.set $3 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -13298,14 +13273,14 @@ unreachable end i64.const 50 - local.set $1 + local.set $3 loop $for-loop|1 - local.get $1 + local.get $3 i64.const 100 i64.lt_s if - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -13316,11 +13291,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#add - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -13331,14 +13306,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i64.const 1 i64.add - local.set $1 + local.set $3 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -13358,52 +13333,53 @@ global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 local.set $11 - local.get $2 + local.get $4 i32.load offset=16 local.tee $12 - local.set $4 - local.get $8 + local.set $5 + local.get $1 + local.tee $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i64.const 0 i64.store - local.get $3 + local.get $1 i32.const 16 i32.const 16 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link - local.get $3 + local.get $1 i32.const 0 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.store offset=8 - local.get $3 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 134217727 i32.gt_u if @@ -13415,9 +13391,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 8 - local.get $4 + local.get $5 i32.const 8 i32.gt_u select @@ -13426,52 +13402,52 @@ local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $9 call $~lib/memory/memory.fill - local.get $3 - local.get $5 + local.get $1 + local.get $6 i32.store - local.get $3 - local.get $5 + local.get $1 + local.get $6 call $~lib/rt/itcms/__link - local.get $3 - local.get $5 + local.get $1 + local.get $6 i32.store offset=4 - local.get $3 + local.get $1 local.get $9 i32.store offset=8 - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 - local.get $3 + local.get $2 + local.get $1 i32.store loop $for-loop|01 - local.get $7 + local.get $8 local.get $12 i32.lt_s if local.get $11 - local.get $7 + local.get $8 i32.const 4 i32.shl i32.add - local.tee $4 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $1 local.get $0 - local.get $4 + local.get $2 i64.load call $~lib/array/Array#__set local.get $0 @@ -13479,19 +13455,19 @@ i32.add local.set $0 end - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|01 end end - local.get $3 + local.get $1 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $1 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -13499,21 +13475,21 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $10 - local.get $3 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $2 i32.store offset=8 loop $for-loop|2 - local.get $6 - local.get $3 + local.get $7 + local.get $1 i32.load offset=12 i32.lt_s if - local.get $2 - local.get $3 - local.get $6 + local.get $4 + local.get $1 + local.get $7 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -13525,22 +13501,22 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $6 + local.get $2 + local.get $1 + local.get $7 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $6 + local.get $7 i32.const 1 i32.add - local.set $6 + local.set $7 br $for-loop|2 end end - local.get $4 - i32.load offset=20 local.get $2 i32.load offset=20 + local.get $4 + i32.load offset=20 i32.ne if i32.const 0 @@ -13551,14 +13527,14 @@ unreachable end i64.const 0 - local.set $1 + local.set $3 loop $for-loop|3 - local.get $1 + local.get $3 i64.const 50 i64.lt_s if - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -13569,11 +13545,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#delete - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -13583,14 +13559,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i64.const 1 i64.add - local.set $1 + local.set $3 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -13603,14 +13579,14 @@ unreachable end i64.const 0 - local.set $1 + local.set $3 loop $for-loop|4 - local.get $1 + local.get $3 i64.const 50 i64.lt_s if - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -13620,11 +13596,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#add - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -13635,11 +13611,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#delete - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -13649,14 +13625,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i64.const 1 i64.add - local.set $1 + local.set $3 br $for-loop|4 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -13668,9 +13644,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -14102,10 +14078,10 @@ end ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -14257,9 +14233,9 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 i64) + (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) @@ -14273,29 +14249,29 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|0 - local.get $1 + local.get $3 i64.const 100 i64.lt_u if - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -14305,11 +14281,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#add - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -14320,14 +14296,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i64.const 1 i64.add - local.set $1 + local.set $3 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -14340,14 +14316,14 @@ unreachable end i64.const 50 - local.set $1 + local.set $3 loop $for-loop|1 - local.get $1 + local.get $3 i64.const 100 i64.lt_u if - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -14358,11 +14334,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#add - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -14373,14 +14349,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i64.const 1 i64.add - local.set $1 + local.set $3 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -14400,52 +14376,53 @@ global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 local.set $11 - local.get $2 + local.get $4 i32.load offset=16 local.tee $12 - local.set $4 - local.get $8 + local.set $5 + local.get $1 + local.tee $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i64.const 0 i64.store - local.get $3 + local.get $1 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link - local.get $3 + local.get $1 i32.const 0 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.store offset=8 - local.get $3 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 134217727 i32.gt_u if @@ -14457,9 +14434,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 8 - local.get $4 + local.get $5 i32.const 8 i32.gt_u select @@ -14468,52 +14445,52 @@ local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $9 call $~lib/memory/memory.fill - local.get $3 - local.get $5 + local.get $1 + local.get $6 i32.store - local.get $3 - local.get $5 + local.get $1 + local.get $6 call $~lib/rt/itcms/__link - local.get $3 - local.get $5 + local.get $1 + local.get $6 i32.store offset=4 - local.get $3 + local.get $1 local.get $9 i32.store offset=8 - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 - local.get $3 + local.get $2 + local.get $1 i32.store loop $for-loop|01 - local.get $7 + local.get $8 local.get $12 i32.lt_s if local.get $11 - local.get $7 + local.get $8 i32.const 4 i32.shl i32.add - local.tee $4 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $1 local.get $0 - local.get $4 + local.get $2 i64.load call $~lib/array/Array#__set local.get $0 @@ -14521,19 +14498,19 @@ i32.add local.set $0 end - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|01 end end - local.get $3 + local.get $1 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $1 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -14541,21 +14518,21 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $10 - local.get $3 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $4 + local.tee $2 i32.store offset=8 loop $for-loop|2 - local.get $6 - local.get $3 + local.get $7 + local.get $1 i32.load offset=12 i32.lt_s if - local.get $2 - local.get $3 - local.get $6 + local.get $4 + local.get $1 + local.get $7 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -14567,22 +14544,22 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $6 + local.get $2 + local.get $1 + local.get $7 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $6 + local.get $7 i32.const 1 i32.add - local.set $6 + local.set $7 br $for-loop|2 end end - local.get $4 - i32.load offset=20 local.get $2 i32.load offset=20 + local.get $4 + i32.load offset=20 i32.ne if i32.const 0 @@ -14593,14 +14570,14 @@ unreachable end i64.const 0 - local.set $1 + local.set $3 loop $for-loop|3 - local.get $1 + local.get $3 i64.const 50 i64.lt_u if - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -14611,11 +14588,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#delete - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -14625,14 +14602,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i64.const 1 i64.add - local.set $1 + local.set $3 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -14645,14 +14622,14 @@ unreachable end i64.const 0 - local.set $1 + local.set $3 loop $for-loop|4 - local.get $1 + local.get $3 i64.const 50 i64.lt_u if - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -14662,11 +14639,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#add - local.get $2 - local.get $1 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -14677,11 +14654,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - call $~lib/set/Set#delete - local.get $2 - local.get $1 + local.get $4 + local.get $3 + call $~lib/set/Set#delete + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -14691,14 +14668,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i64.const 1 i64.add - local.set $1 + local.set $3 br $for-loop|4 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -14710,9 +14687,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -15038,10 +15015,10 @@ end ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -15198,11 +15175,11 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -15585,9 +15562,9 @@ global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $0 i32.const 0 i32.store local.get $3 @@ -15596,15 +15573,15 @@ local.get $3 i32.load offset=16 local.tee $12 - local.set $0 - local.get $8 + local.set $5 + local.get $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $4 i64.const 0 @@ -15630,7 +15607,7 @@ local.get $4 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 268435455 i32.gt_u if @@ -15642,9 +15619,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.const 8 - local.get $0 + local.get $5 i32.const 8 i32.gt_u select @@ -15653,40 +15630,40 @@ local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $9 call $~lib/memory/memory.fill local.get $4 - local.get $5 + local.get $6 i32.store local.get $4 - local.get $5 + local.get $6 call $~lib/rt/itcms/__link local.get $4 - local.get $5 + local.get $6 i32.store offset=4 local.get $4 local.get $9 i32.store offset=8 local.get $4 - local.get $0 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $0 local.get $4 i32.store loop $for-loop|01 - local.get $6 + local.get $8 local.get $12 i32.lt_s if local.get $11 - local.get $6 + local.get $8 i32.const 3 i32.shl i32.add @@ -15741,10 +15718,10 @@ local.get $2 f32.store end - local.get $6 + local.get $8 i32.const 1 i32.add - local.set $6 + local.set $8 br $for-loop|01 end end @@ -15816,8 +15793,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find11 - loop $while-continue|012 + block $__inlined_func$~lib/set/Set#find10 + loop $while-continue|011 local.get $0 if local.get $0 @@ -15833,12 +15810,12 @@ f32.load f32.eq end - br_if $__inlined_func$~lib/set/Set#find11 + br_if $__inlined_func$~lib/set/Set#find10 local.get $6 i32.const -2 i32.and local.set $0 - br $while-continue|012 + br $while-continue|011 end end i32.const 0 @@ -15925,8 +15902,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find14 - loop $while-continue|015 + block $__inlined_func$~lib/set/Set#find13 + loop $while-continue|014 local.get $0 if local.get $0 @@ -15942,12 +15919,12 @@ f32.load f32.eq end - br_if $__inlined_func$~lib/set/Set#find14 + br_if $__inlined_func$~lib/set/Set#find13 local.get $4 i32.const -2 i32.and local.set $0 - br $while-continue|015 + br $while-continue|014 end end i32.const 0 @@ -16005,8 +15982,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find17 - loop $while-continue|018 + block $__inlined_func$~lib/set/Set#find16 + loop $while-continue|017 local.get $0 if local.get $0 @@ -16022,12 +15999,12 @@ f32.load f32.eq end - br_if $__inlined_func$~lib/set/Set#find17 + br_if $__inlined_func$~lib/set/Set#find16 local.get $4 i32.const -2 i32.and local.set $0 - br $while-continue|018 + br $while-continue|017 end end i32.const 0 @@ -16107,8 +16084,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find20 - loop $while-continue|021 + block $__inlined_func$~lib/set/Set#find19 + loop $while-continue|020 local.get $0 if local.get $0 @@ -16124,12 +16101,12 @@ f32.load f32.eq end - br_if $__inlined_func$~lib/set/Set#find20 + br_if $__inlined_func$~lib/set/Set#find19 local.get $4 i32.const -2 i32.and local.set $0 - br $while-continue|021 + br $while-continue|020 end end i32.const 0 @@ -16186,8 +16163,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find23 - loop $while-continue|024 + block $__inlined_func$~lib/set/Set#find22 + loop $while-continue|023 local.get $0 if local.get $0 @@ -16203,12 +16180,12 @@ f32.load f32.eq end - br_if $__inlined_func$~lib/set/Set#find23 + br_if $__inlined_func$~lib/set/Set#find22 local.get $4 i32.const -2 i32.and local.set $0 - br $while-continue|024 + br $while-continue|023 end end i32.const 0 @@ -16266,8 +16243,8 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/set/Set#find26 - loop $while-continue|027 + block $__inlined_func$~lib/set/Set#find25 + loop $while-continue|026 local.get $0 if local.get $0 @@ -16283,12 +16260,12 @@ f32.load f32.eq end - br_if $__inlined_func$~lib/set/Set#find26 + br_if $__inlined_func$~lib/set/Set#find25 local.get $4 i32.const -2 i32.and local.set $0 - br $while-continue|027 + br $while-continue|026 end end i32.const 0 @@ -16765,10 +16742,10 @@ end ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1248 i32.const 1616 @@ -16925,7 +16902,7 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) @@ -16934,16 +16911,16 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 f64) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -16953,15 +16930,15 @@ i32.store offset=8 local.get $1 call $~lib/set/Set#constructor - local.tee $11 + local.tee $4 i32.store loop $for-loop|0 - local.get $12 + local.get $3 f64.const 100 f64.lt if - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -16971,11 +16948,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#add - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -16986,14 +16963,14 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $3 f64.const 1 f64.add - local.set $12 + local.set $3 br $for-loop|0 end end - local.get $11 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -17006,14 +16983,14 @@ unreachable end f64.const 50 - local.set $12 + local.set $3 loop $for-loop|1 - local.get $12 + local.get $3 f64.const 100 f64.lt if - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -17024,11 +17001,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#add - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -17039,14 +17016,14 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $3 f64.const 1 f64.add - local.set $12 + local.set $3 br $for-loop|1 end end - local.get $11 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -17059,59 +17036,60 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $10 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $1 i32.const 0 i32.store - local.get $11 + local.get $4 i32.load offset=8 - local.set $3 - local.get $11 + local.set $11 + local.get $4 i32.load offset=16 - local.tee $2 - local.set $1 - local.get $6 + local.tee $12 + local.set $5 + local.get $1 + local.tee $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1836 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $10 + local.tee $1 i64.const 0 i64.store - local.get $10 + local.get $1 i32.const 16 i32.const 22 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $1 i32.store - local.get $10 + local.get $1 i32.const 0 i32.store - local.get $10 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link - local.get $10 + local.get $1 i32.const 0 i32.store offset=4 - local.get $10 + local.get $1 i32.const 0 i32.store offset=8 - local.get $10 + local.get $1 i32.const 0 i32.store offset=12 - local.get $1 + local.get $5 i32.const 134217727 i32.gt_u if @@ -17123,74 +17101,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.const 8 - local.get $1 + local.get $5 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $5 + local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $6 i32.store offset=4 + local.get $6 local.get $9 - local.get $5 call $~lib/memory/memory.fill - local.get $10 - local.get $9 + local.get $1 + local.get $6 i32.store - local.get $10 - local.get $9 + local.get $1 + local.get $6 call $~lib/rt/itcms/__link - local.get $10 - local.get $9 + local.get $1 + local.get $6 i32.store offset=4 - local.get $10 - local.get $5 + local.get $1 + local.get $9 i32.store offset=8 - local.get $10 local.get $1 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $10 + local.get $0 + local.get $1 i32.store loop $for-loop|01 - local.get $2 - local.get $7 - i32.gt_s + local.get $8 + local.get $12 + i32.lt_s if - local.get $3 - local.get $7 + local.get $11 + local.get $8 i32.const 4 i32.shl i32.add - local.tee $9 + local.tee $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.add - local.set $0 - local.get $9 + local.set $2 + local.get $5 f64.load - local.set $12 + local.set $3 + local.get $0 local.get $1 - local.get $10 i32.load offset=12 i32.ge_u if - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -17201,62 +17179,62 @@ call $~lib/builtins/abort unreachable end - local.get $10 local.get $1 + local.get $0 i32.const 1 i32.add - local.tee $9 + local.tee $5 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $10 - local.get $9 + local.get $1 + local.get $5 i32.store offset=12 end - local.get $10 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $0 i32.const 3 i32.shl i32.add - local.get $12 + local.get $3 f64.store end - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|01 end end - local.get $10 - local.get $0 + local.get $1 + local.get $2 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $10 - local.get $0 + local.get $1 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 local.get $10 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $8 - local.get $10 + local.get $7 + local.get $1 i32.load offset=12 i32.lt_s if - local.get $11 - local.get $10 - local.get $8 + local.get $4 + local.get $1 + local.get $7 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -17268,21 +17246,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 local.get $1 - local.get $10 - local.get $8 + local.get $7 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $8 + local.get $7 i32.const 1 i32.add - local.set $8 + local.set $7 br $for-loop|2 end end - local.get $1 + local.get $0 i32.load offset=20 - local.get $11 + local.get $4 i32.load offset=20 i32.ne if @@ -17294,14 +17272,14 @@ unreachable end f64.const 0 - local.set $12 + local.set $3 loop $for-loop|3 - local.get $12 + local.get $3 f64.const 50 f64.lt if - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -17312,11 +17290,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#delete - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -17326,14 +17304,14 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $3 f64.const 1 f64.add - local.set $12 + local.set $3 br $for-loop|3 end end - local.get $11 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -17346,14 +17324,14 @@ unreachable end f64.const 0 - local.set $12 + local.set $3 loop $for-loop|4 - local.get $12 + local.get $3 f64.const 50 f64.lt if - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -17363,11 +17341,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#add - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#has i32.eqz if @@ -17378,11 +17356,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#delete - local.get $11 - local.get $12 + local.get $4 + local.get $3 call $~lib/set/Set#has if i32.const 0 @@ -17392,14 +17370,14 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $3 f64.const 1 f64.add - local.set $12 + local.set $3 br $for-loop|4 end end - local.get $11 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -17411,9 +17389,9 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $4 call $~lib/set/Set#clear - local.get $11 + local.get $4 i32.load offset=20 if i32.const 0 diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 85034e017b..e6996f90c4 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -394,8 +394,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -403,11 +401,12 @@ 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 $2 local.get $3 i32.const 4 @@ -415,6 +414,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -426,17 +426,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -642,7 +642,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -650,6 +649,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -665,7 +665,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -673,6 +672,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -727,11 +727,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1904 @@ -755,11 +755,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1904 @@ -919,17 +919,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -989,15 +989,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1125,12 +1125,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1170,13 +1168,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1216,10 +1214,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1228,7 +1226,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1237,6 +1234,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1250,12 +1248,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1268,7 +1266,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1277,6 +1274,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1460,418 +1458,103 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1632 - i32.const 1696 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $3 - loop $do-continue|0 - local.get $3 - call $~lib/rt/itcms/step - i32.sub - local.set $3 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $3 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total + loop $while-continue|0 + local.get $1 + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select + if + local.get $0 local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 local.get $3 - global.get $~lib/rt/itcms/threshold + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold + local.set $2 + br $while-continue|0 end end local.get $0 - i32.const 16 - i32.add - local.set $6 - global.get $~lib/rt/tlsf/ROOT + i32.const 3 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1632 - i32.const 1904 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + 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 - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 i32.add - else - local.get $3 + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1904 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1904 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 - local.get $1 - i32.store offset=12 - local.get $6 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $1 - local.get $6 - local.get $3 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $3 - local.get $6 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $6 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $6 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - 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 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 + i32.const 4 i32.and if local.get $0 @@ -1938,29 +1621,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -1982,25 +1663,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2073,25 +1754,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2160,25 +1841,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2218,143 +1899,270 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 @@ -2373,176 +2181,559 @@ i32.store8 offset=1 end local.get $2 - i32.const 8 + i32.const 1 i32.and if local.get $0 local.get $1 i32.load8_u i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 + end + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $6 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $6 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.store offset=16 local.get $0 - i32.const 1 - i32.add - local.tee $0 + return + end + local.get $6 + i32.load offset=12 + local.set $7 + local.get $1 + local.tee $3 + i32.const 1073741804 + i32.ge_u + if + i32.const 1632 + i32.const 1696 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $1 + loop $do-continue|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $1 + local.get $1 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $3 + i32.const 16 + i32.add + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $5 + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1632 + i32.const 1904 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 + i32.const 19 i32.add - local.tee $0 + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $4 + i32.eqz + if + memory.size + local.tee $2 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 + i32.const 536870910 + 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.const 1 + i32.sub + i32.add + else + local.get $1 + end + i32.const 4 + local.get $5 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl i32.add - local.tee $0 - local.get $1 - i32.const 1 + i32.const 65535 i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u local.tee $4 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 + local.get $2 local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $5 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $5 + local.get $1 + call $~lib/rt/tlsf/searchBlock + local.tee $4 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + local.get $4 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $5 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.set $2 + local.get $4 + local.tee $1 + i32.load + local.set $4 local.get $2 i32.const 4 + i32.add + i32.const 15 i32.and if - local.get $0 + i32.const 0 + i32.const 1904 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $8 + i32.const 16 + i32.ge_u + if local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 + local.get $2 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 local.get $1 - i32.const 1 + i32.const 4 i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 i32.add - local.tee $0 - local.get $1 + local.tee $4 + local.get $8 + i32.const 4 + i32.sub i32.const 1 + i32.or + i32.store + local.get $5 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 local.tee $4 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $3 - i32.const 2 + i32.load + i32.const -4 + i32.and i32.add - local.set $1 local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store end + local.get $1 + local.get $7 + i32.store offset=12 + local.get $1 + local.get $3 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $1 local.get $2 - i32.const 2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $4 + local.get $1 + local.get $4 + i32.load offset=4 + i32.const 3 i32.and - if + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $4 + local.get $3 + call $~lib/memory/memory.fill + local.get $3 + local.get $6 + i32.load offset=16 + local.tee $1 + local.get $1 + local.get $3 + i32.gt_u + select + local.set $5 + block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.tee $1 + local.get $4 + local.tee $0 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - i32.load8_u - i32.store8 local.get $0 - local.tee $4 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end local.get $0 local.get $1 - i32.load8_u - i32.store8 + 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 $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + 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 $5 + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + 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 $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.add + local.get $1 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + i32.add + local.get $1 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.add + local.get $1 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end end + local.get $4 ) (func $~lib/array/ensureCapacity (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.get $0 i32.load offset=8 - local.tee $8 + local.tee $3 local.get $1 i32.shr_u i32.const 1 @@ -2561,257 +2752,38 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/rt/itcms/__renew - local.get $8 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - i32.const 8 - local.get $1 - i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $7 - local.get $0 - i32.load - local.tee $9 - local.tee $1 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $2 - local.get $7 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $7 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $5 - local.get $7 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $7 - i32.gt_u - select - local.set $6 - block $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $5 - local.tee $2 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.sub - local.get $6 - i32.sub - i32.const 0 - local.get $6 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $2 - local.get $1 - local.get $6 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $2 - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $1 - i64.load - i64.store - local.get $6 - i32.const 8 - i32.sub - local.set $6 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $6 - if - local.get $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $2 - local.get $6 - i32.add - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.add - local.get $1 - local.get $6 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $6 - i32.const 8 - i32.sub - local.tee $6 - i32.add - local.get $1 - local.get $6 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $6 - if - local.get $2 - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.add - local.get $1 - local.get $6 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $5 - local.set $1 - end + local.get $3 + local.get $0 + i32.load + local.tee $2 + local.get $3 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1073741820 + local.get $4 + i32.const 1073741820 + i32.lt_u + select + local.tee $4 + i32.const 8 local.get $1 - local.get $8 + i32.shl + local.tee $1 + local.get $1 + local.get $4 + i32.lt_u + select + local.tee $4 + call $~lib/rt/itcms/__renew + local.tee $1 i32.add - local.get $7 - local.get $8 + local.get $4 + local.get $3 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $9 + local.get $2 i32.ne if local.get $0 @@ -2821,6 +2793,7 @@ local.get $1 i32.store offset=4 local.get $1 + local.tee $2 if local.get $0 i32.eqz @@ -2833,7 +2806,7 @@ unreachable end global.get $~lib/rt/itcms/white - local.get $1 + local.get $2 i32.const 20 i32.sub local.tee $2 @@ -2848,7 +2821,7 @@ i32.load offset=4 i32.const 3 i32.and - local.tee $1 + local.tee $3 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -2860,7 +2833,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $1 + local.get $3 i32.const 3 i32.eq select @@ -2873,7 +2846,7 @@ end end local.get $0 - local.get $7 + local.get $4 i32.store offset=8 end ) diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index c2905c029e..6580b71cf3 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -2,8 +2,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -117,14 +117,14 @@ (export "memory" (memory $0)) (start $~start) (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1088 i32.const 1152 @@ -133,10 +133,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load ) @@ -484,8 +484,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -493,11 +491,12 @@ 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 $2 local.get $3 i32.const 4 @@ -505,6 +504,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -516,17 +516,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -732,7 +732,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -740,6 +739,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -755,7 +755,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -763,6 +762,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -817,11 +817,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -845,11 +845,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1616 @@ -1009,17 +1009,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1079,15 +1079,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1215,12 +1215,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1260,13 +1258,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1306,10 +1304,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1318,7 +1316,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1327,6 +1324,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1340,12 +1338,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1358,7 +1356,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1367,6 +1364,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1573,12 +1571,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1594,14 +1592,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1615,14 +1613,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1633,14 +1632,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1648,19 +1646,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1668,17 +1668,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1688,18 +1687,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1707,18 +1704,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1729,8 +1726,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1743,13 +1740,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1762,54 +1759,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1819,37 +1816,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1857,7 +1854,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -2028,29 +2025,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2072,25 +2067,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2163,25 +2158,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2250,25 +2245,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2308,143 +2303,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2466,68 +2447,62 @@ i32.const 8 i32.and if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 + local.get $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 @@ -2554,23 +2529,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2898,7 +2871,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -2912,18 +2885,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -2931,20 +2901,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -2957,33 +2927,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -3312,114 +3282,133 @@ end local.get $0 ) + (func $~lib/staticarray/StaticArray~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/array/Array<~lib/string/String> - block $std/staticarray/Ref - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $std/staticarray/Ref + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $invalid + call $~lib/rt/itcms/__visit end return end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end + local.get $0 + call $~lib/staticarray/StaticArray~visit return end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 i32.load call $~lib/rt/itcms/__visit return end + local.get $0 + call $~lib/staticarray/StaticArray~visit return end - return - end - unreachable - end - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $1 - loop $while-continue|00 - local.get $0 - local.get $1 - i32.lt_u - if local.get $0 - i32.load + local.tee $1 + i32.load offset=4 local.tee $2 - if - local.get $2 - call $~lib/rt/itcms/__visit - end local.get $0 - i32.const 4 + i32.load offset=12 + i32.const 2 + i32.shl i32.add - local.set $0 - br $while-continue|00 + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $1 + i32.load + call $~lib/rt/itcms/__visit + return end + return end return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit + unreachable ) (func $~start call $start:std/staticarray @@ -5670,22 +5659,22 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 + i32.const 0 local.get $1 + select + local.tee $3 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - i32.const 0 - local.get $1 - select local.tee $4 i32.add local.tee $2 @@ -5709,7 +5698,7 @@ i32.store local.get $2 local.get $0 - local.get $3 + local.get $4 i32.const 2 i32.shl local.tee $0 @@ -5718,7 +5707,7 @@ local.get $2 i32.add local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -5939,12 +5928,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $6 local.get $0 i32.const 20 i32.sub @@ -5952,6 +5935,12 @@ i32.const 2 i32.shr_u local.tee $2 + local.get $1 + i32.load offset=12 + i32.const 0 + local.get $1 + select + local.tee $6 i32.add local.tee $3 i32.const 268435455 diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 3511d4eab8..708c6ceeb6 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -622,16 +622,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 21056 i32.load i32.gt_u @@ -643,7 +643,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 21060 @@ -659,26 +659,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -787,8 +787,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -796,11 +794,12 @@ 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 $2 local.get $3 i32.const 4 @@ -808,6 +807,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -819,17 +819,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1035,7 +1035,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1043,6 +1042,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -1058,7 +1058,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1066,6 +1065,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -1120,11 +1120,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -1148,11 +1148,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1424 @@ -1312,17 +1312,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1382,15 +1382,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1518,12 +1518,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1563,13 +1561,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1609,10 +1607,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1621,7 +1619,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1630,6 +1627,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1643,12 +1641,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1661,7 +1659,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1670,6 +1667,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1700,12 +1698,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1721,14 +1719,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1742,15 +1740,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1762,13 +1760,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1776,19 +1773,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1796,17 +1795,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1816,18 +1814,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1835,18 +1831,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1857,8 +1853,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1871,13 +1867,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1890,54 +1886,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1947,37 +1943,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1985,20 +1981,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -2009,10 +2005,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -2029,7 +2025,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -2041,38 +2037,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -2085,20 +2081,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -2121,49 +2117,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2171,150 +2167,162 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $folding-inner0 - local.get $0 - i32.const 8 - i32.shr_u - local.tee $2 - i32.const 6084 - i32.add - i32.load8_u - local.get $2 - i32.const 2444 - i32.add - i32.load8_u - i32.const 86 - i32.mul - i32.const 2444 - i32.add - local.get $0 - i32.const 255 + local.get $0 + i32.const 8 + i32.shr_u + local.tee $2 + i32.const 6084 + i32.add + i32.load8_u + local.get $2 + i32.const 2444 + i32.add + i32.load8_u + i32.const 86 + i32.mul + i32.const 2444 + i32.add + local.get $0 + i32.const 255 + i32.and + local.tee $5 + i32.const 3 + i32.div_u + i32.add + i32.load8_u + local.get $5 + i32.const 3 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5112 + i32.add + i32.load + i32.mul + i32.const 11 + i32.shr_u + i32.const 6 + i32.rem_u + i32.add + i32.const 2 + i32.shl + i32.const 5124 + i32.add + i32.load + local.tee $2 + i32.const 255 + i32.and + local.set $4 + local.get $2 + i32.const 8 + i32.shr_s + local.set $3 + local.get $4 + i32.const 2 + i32.lt_u + if + i32.const 0 + local.get $1 + local.get $4 + i32.xor + i32.sub + local.get $3 i32.and - local.tee $5 - i32.const 3 - i32.div_u - i32.add - i32.load8_u - local.get $5 - i32.const 3 - i32.rem_u - i32.const 2 - i32.shl - i32.const 5112 - i32.add - i32.load - i32.mul - i32.const 11 - i32.shr_u - i32.const 6 - i32.rem_u - i32.add - i32.const 2 - i32.shl - i32.const 5124 + local.get $0 i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shr_s - local.set $3 + return + end + local.get $3 + i32.const 255 + i32.and + local.set $2 + local.get $3 + i32.const 8 + i32.shr_u + local.set $4 + loop $while-continue|0 local.get $2 - i32.const 255 - i32.and - local.tee $2 - i32.const 2 - i32.lt_u - br_if $folding-inner0 - local.get $3 - i32.const 255 - i32.and - local.set $2 - local.get $3 - i32.const 8 - i32.shr_u - local.set $4 - loop $while-continue|0 + if + local.get $5 local.get $2 - if - local.get $5 - local.get $2 - i32.const 1 - i32.shr_u - local.tee $3 + i32.const 1 + i32.shr_u + local.tee $3 + local.get $4 + i32.add + i32.const 1 + i32.shl + i32.const 6596 + i32.add + i32.load8_u + local.tee $6 + i32.eq + if (result i32) + local.get $3 local.get $4 i32.add i32.const 1 i32.shl i32.const 6596 i32.add - i32.load8_u - local.tee $6 - i32.eq - if (result i32) + i32.load8_u offset=1 + i32.const 2 + i32.shl + i32.const 5124 + i32.add + i32.load + local.tee $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_s + local.set $2 + local.get $3 + i32.const 2 + i32.lt_u + if + i32.const 0 + local.get $1 local.get $3 - local.get $4 - i32.add - i32.const 1 - i32.shl - i32.const 6596 - i32.add - i32.load8_u offset=1 - i32.const 2 - i32.shl - i32.const 5124 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shr_s - local.set $3 + i32.xor + i32.sub local.get $2 - i32.const 255 i32.and - local.tee $2 - i32.const 2 - i32.lt_u - br_if $folding-inner0 local.get $0 - i32.const 1 i32.add - local.get $1 - i32.const 1 - i32.shl - i32.sub return + end + local.get $0 + i32.const 1 + i32.add + local.get $1 + i32.const 1 + i32.shl + i32.sub + return + else + local.get $5 + local.get $6 + i32.lt_u + if (result i32) + local.get $3 else - local.get $5 - local.get $6 - i32.lt_u - if (result i32) - local.get $3 - else - local.get $3 - local.get $4 - i32.add - local.set $4 - local.get $2 - local.get $3 - i32.sub - end + local.get $3 + local.get $4 + i32.add + local.set $4 + local.get $2 + local.get $3 + i32.sub end - local.set $2 - br $while-continue|0 end + local.set $2 + br $while-continue|0 end - local.get $0 - return end local.get $0 - local.get $3 - i32.const 0 - local.get $1 - local.get $2 - i32.xor - i32.sub - i32.and - i32.add ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2479,29 +2487,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2523,25 +2529,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2614,25 +2620,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2701,25 +2707,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2759,143 +2765,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2922,63 +2914,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3005,23 +2991,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 @@ -3266,7 +3250,6 @@ (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.const 20 i32.sub @@ -3276,7 +3259,8 @@ i32.and i32.const 16 i32.sub - i32.le_u + local.get $1 + i32.ge_u if local.get $2 local.get $1 @@ -3293,10 +3277,10 @@ local.get $1 local.get $2 i32.load offset=16 - local.tee $0 - local.get $0 + local.tee $2 local.get $1 - i32.gt_u + local.get $2 + i32.lt_u select call $~lib/memory/memory.copy local.get $3 @@ -3327,7 +3311,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3341,18 +3325,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -3360,20 +3341,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -3386,33 +3367,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -3435,13 +3416,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -3470,13 +3451,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -3496,12 +3477,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -3511,18 +3492,290 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 i32.add - i32.store16 + i32.store16 + end + ) + (func $~lib/number/I64#toString (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa64 + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 19200 + local.set $1 + br $__inlined_func$~lib/util/number/itoa64 + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $4 + select + local.tee $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $3 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $4 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.get $4 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $while-continue|0 + local.get $0 + i64.const 100000000 + i64.ge_u + if + local.get $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i64.const 100000000 + i64.div_u + local.tee $0 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $5 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $5 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + local.get $0 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + end + local.get $4 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end + local.get $1 ) (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3906,17 +4159,17 @@ i32.const 65536 i32.sub local.tee $1 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $1 i32.const 1023 i32.and i32.const 56320 i32.or i32.const 16 i32.shl - local.get $1 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or i32.or i32.store local.get $5 @@ -6517,7 +6770,7 @@ i32.const 18944 i32.store offset=4 local.get $0 - call $~lib/util/number/itoa64 + call $~lib/number/I64#toString local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 @@ -6541,7 +6794,7 @@ i32.const 20784 i32.store offset=4 local.get $2 - call $~lib/util/number/itoa64 + call $~lib/number/I64#toString local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 @@ -6582,7 +6835,7 @@ i32.const 20944 i32.store offset=4 local.get $3 - call $~lib/util/number/itoa64 + call $~lib/number/I64#toString local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 @@ -6606,7 +6859,7 @@ i32.const 21008 i32.store offset=4 local.get $1 - call $~lib/util/number/itoa64 + call $~lib/number/I64#toString local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 @@ -6703,7 +6956,7 @@ i32.shl i32.add i32.load16_u - local.tee $1 + local.tee $2 i32.const 7 i32.shr_u if @@ -6714,7 +6967,7 @@ i32.sub i32.lt_u i32.const 0 - local.get $1 + local.get $2 i32.const 55295 i32.sub i32.const 1025 @@ -6740,8 +6993,8 @@ local.get $7 i32.const 1023 i32.and - local.get $1 - local.tee $2 + local.get $2 + local.tee $1 i32.const 1023 i32.and i32.const 10 @@ -6749,7 +7002,7 @@ i32.or i32.const 65536 i32.add - local.tee $1 + local.tee $2 i32.const 131072 i32.ge_u if @@ -6758,7 +7011,7 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $1 local.get $7 i32.const 16 i32.shl @@ -6772,7 +7025,7 @@ end end end - local.get $1 + local.get $2 i32.const 304 i32.eq if @@ -6788,7 +7041,7 @@ i32.add local.set $5 else - local.get $1 + local.get $2 i32.const 931 i32.eq if @@ -7115,7 +7368,7 @@ select i32.store16 else - local.get $1 + local.get $2 i32.const 9398 i32.sub i32.const 25 @@ -7126,12 +7379,12 @@ i32.const 1 i32.shl i32.add - local.get $1 + local.get $2 i32.const 26 i32.add i32.store16 else - local.get $1 + local.get $2 i32.const 0 call $~lib/util/casemap/casemap i32.const 2097151 @@ -7185,7 +7438,7 @@ i32.const 1 i32.shl i32.add - local.get $1 + local.get $2 i32.const 7084 i32.add i32.load8_u @@ -7287,273 +7540,4 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/util/number/itoa64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21092 - i32.lt_s - if - i32.const 37504 - i32.const 37552 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 19200 - return - end - i64.const 0 - local.get $0 - i64.sub - local.get $0 - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $4 - select - local.tee $0 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.wrap_i64 - local.tee $3 - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $4 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $4 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $while-continue|0 - local.get $0 - i64.const 100000000 - i64.ge_u - if - local.get $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $0 - i64.const 100000000 - i64.div_u - local.tee $0 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.tee $3 - i32.const 10000 - i32.rem_u - local.tee $5 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u - local.get $5 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - local.get $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - local.get $0 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - end - local.get $4 - if - local.get $1 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 192f170923..8bab4ce9a7 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -207,16 +207,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 22512 i32.load i32.gt_u @@ -228,7 +228,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 22516 @@ -244,26 +244,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -372,8 +372,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -381,11 +379,12 @@ 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 $2 local.get $3 i32.const 4 @@ -393,6 +392,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -404,17 +404,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -620,7 +620,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -628,6 +627,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -643,7 +643,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -651,6 +650,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -705,11 +705,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1488 @@ -733,11 +733,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1488 @@ -897,17 +897,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -967,15 +967,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1103,12 +1103,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1148,13 +1146,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1194,10 +1192,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1206,7 +1204,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1215,6 +1212,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1228,12 +1226,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1246,7 +1244,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1255,6 +1252,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1285,12 +1283,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1306,14 +1304,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1327,15 +1325,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1347,13 +1345,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1361,19 +1358,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1381,17 +1380,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1401,18 +1399,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1420,18 +1416,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1442,8 +1438,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1456,13 +1452,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1475,54 +1471,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1532,37 +1528,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1570,20 +1566,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1594,10 +1590,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1614,7 +1610,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1626,38 +1622,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1670,20 +1666,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1706,49 +1702,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1913,29 +1909,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -1957,25 +1951,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2048,25 +2042,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2135,25 +2129,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2193,143 +2187,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2356,63 +2336,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2439,23 +2413,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2723,7 +2695,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -2737,18 +2709,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -2756,20 +2725,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -2782,33 +2751,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -2821,10 +2790,10 @@ (local $3 i32) (local $4 i32) local.get $0 - local.get $0 i32.const 20 i32.sub i32.load offset=16 + local.get $0 i32.add local.set $4 local.get $1 @@ -2843,9 +2812,9 @@ i32.const 128 i32.lt_u if (result i32) - local.get $1 local.get $3 i32.eqz + local.get $1 i32.and br_if $while-break|0 local.get $2 @@ -2955,8 +2924,6 @@ (func $~start (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3206,241 +3173,39 @@ i32.const 3 call $~lib/builtins/abort unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1052 - i32.load - local.set $2 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store - local.get $3 - i32.const 1552 - i32.store offset=8 - local.get $1 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1056 - i32.store offset=8 - local.get $1 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1584 - i32.store offset=8 - local.get $1 - i32.const 1584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1616 - i32.store offset=8 - local.get $1 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1648 - i32.store offset=8 - local.get $1 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 8 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1680 - i32.store offset=8 - local.get $1 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 call $~lib/string/String.UTF16.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer @@ -3448,16 +3213,16 @@ local.get $0 i32.store local.get $1 - i32.const 1552 + i32.const 1056 i32.store offset=8 local.get $0 - i32.const 1552 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1088 - i32.const 48 + i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable @@ -3466,6 +3231,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF16DecodeUnsafe global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4297,6 +4063,221 @@ call $~lib/builtins/abort unreachable ) + (func $std/string-encoding/testUTF16DecodeUnsafe + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + if + i32.const 38944 + i32.const 38992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1056 + i32.store + local.get $1 + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + local.set $2 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $0 + i32.store + local.get $3 + i32.const 1552 + i32.store offset=8 + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1584 + i32.store offset=8 + local.get $0 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1616 + i32.store offset=8 + local.get $0 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1648 + i32.store offset=8 + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1680 + i32.store offset=8 + local.get $0 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + i32.add + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 1552 + i32.store offset=8 + local.get $1 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $std/string-encoding/testUTF8DecodeUnsafe (local $0 i32) (local $1 i32) @@ -4771,10 +4752,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i32.const 0 i32.store - local.get $5 + local.get $3 local.get $0 local.get $1 call $~lib/string/String.UTF8.byteLength @@ -4789,16 +4770,18 @@ i32.load offset=16 i32.const 1 i32.shr_u + local.set $3 + local.get $5 + local.set $0 + local.get $4 + local.get $3 i32.const 1 i32.shl - local.get $4 i32.add - local.set $7 - local.get $5 - local.set $0 + local.set $6 loop $while-continue|0 local.get $4 - local.get $7 + local.get $6 i32.lt_u if local.get $4 @@ -4843,7 +4826,7 @@ i32.const 55296 i32.eq if - local.get $7 + local.get $6 local.get $4 i32.const 2 i32.add @@ -4856,7 +4839,7 @@ if local.get $4 i32.load16_u offset=2 - local.tee $6 + local.tee $7 i32.const 64512 i32.and i32.const 56320 @@ -4870,18 +4853,18 @@ i32.shl i32.const 65536 i32.add - local.get $6 + local.get $7 i32.const 1023 i32.and i32.or - local.tee $6 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $6 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -4891,7 +4874,7 @@ i32.const 16 i32.shl i32.or - local.get $6 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -4901,7 +4884,7 @@ i32.const 8 i32.shl i32.or - local.get $6 + local.get $3 i32.const 18 i32.shr_u i32.const 240 diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index b43ea14bde..142ea233a4 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -17,7 +17,7 @@ (type $i32_=>_f64 (func (param i32) (result f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) + (type $i64_i64_i32_i64_i32_=>_i32 (func (param i64 i64 i32 i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 1056)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -1382,8 +1382,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -1391,11 +1389,12 @@ 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 $2 local.get $3 i32.const 4 @@ -1403,6 +1402,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -1414,17 +1414,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1630,7 +1630,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1638,6 +1637,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -1653,7 +1653,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1661,6 +1660,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -1715,11 +1715,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1648 @@ -1743,11 +1743,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1648 @@ -1907,17 +1907,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1977,15 +1977,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -2113,12 +2113,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -2158,13 +2156,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -2204,10 +2202,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -2216,7 +2214,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -2225,6 +2222,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -2238,12 +2236,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -2256,7 +2254,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -2265,6 +2262,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -2471,12 +2469,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -2492,14 +2490,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -2513,14 +2511,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -2531,14 +2530,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -2546,19 +2544,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -2566,17 +2566,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -2586,18 +2585,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -2605,18 +2602,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -2627,8 +2624,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -2641,13 +2638,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -2660,54 +2657,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -2717,37 +2714,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -2755,7 +2752,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -2765,7 +2762,6 @@ ) (func $~lib/string/String#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.const 20 @@ -2778,6 +2774,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -2794,10 +2791,10 @@ i32.const 1 call $~lib/rt/itcms/__new local.tee $2 - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_u i32.store16 @@ -2985,29 +2982,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -3029,25 +3024,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3120,25 +3115,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3207,25 +3202,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -3265,143 +3260,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3428,63 +3409,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3511,23 +3486,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -4585,7 +4558,6 @@ local.set $1 local.get $0 if - local.get $4 local.get $5 i32.load16_u local.tee $0 @@ -4621,7 +4593,8 @@ end end local.tee $0 - i32.le_u + local.get $4 + i32.ge_u if local.get $3 i32.eqz @@ -4862,7 +4835,6 @@ local.set $1 local.get $0 if - local.get $4 local.get $5 i32.load16_u local.tee $0 @@ -4898,7 +4870,8 @@ end end local.tee $0 - i32.le_u + local.get $4 + i32.ge_u if local.get $3 i64.eqz @@ -6062,20 +6035,19 @@ local.get $2 local.get $3 i32.gt_s - local.tee $0 + local.tee $1 select call $~lib/util/string/compareImpl - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s - local.get $0 local.get $1 + local.get $0 select ) (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.const 20 i32.sub @@ -6085,7 +6057,8 @@ i32.and i32.const 16 i32.sub - i32.le_u + local.get $1 + i32.ge_u if local.get $2 local.get $1 @@ -6102,10 +6075,10 @@ local.get $1 local.get $2 i32.load offset=16 - local.tee $0 - local.get $0 + local.tee $2 local.get $1 - i32.gt_u + local.get $2 + i32.lt_u select call $~lib/memory/memory.copy local.get $3 @@ -6119,12 +6092,11 @@ (local $7 i32) local.get $0 i32.load offset=12 - local.tee $6 + local.tee $5 i32.const 1 i32.add - local.tee $5 - local.set $2 - local.get $5 + local.tee $6 + local.tee $2 local.get $0 i32.load offset=8 local.tee $4 @@ -6143,7 +6115,6 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $0 i32.load local.tee $7 @@ -6170,36 +6141,37 @@ local.get $3 i32.lt_u select - local.tee $3 - call $~lib/rt/itcms/__renew local.tee $2 + call $~lib/rt/itcms/__renew + local.tee $3 + local.get $4 i32.add - local.get $3 + local.get $2 local.get $4 i32.sub call $~lib/memory/memory.fill - local.get $2 + local.get $3 local.get $7 i32.ne if local.get $0 - local.get $2 + local.get $3 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $2 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link end local.get $0 - local.get $3 + local.get $2 i32.store offset=8 end local.get $0 i32.load offset=4 - local.get $6 + local.get $5 i32.const 2 i32.shl i32.add @@ -6210,7 +6182,7 @@ i32.const 1 call $~lib/rt/itcms/__link local.get $0 - local.get $5 + local.get $6 i32.store offset=12 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) @@ -6228,13 +6200,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -6263,13 +6235,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -6289,12 +6261,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -6304,12 +6276,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -6322,28 +6294,28 @@ (local $5 i64) local.get $3 i64.extend_i32_s - local.set $4 - local.get $3 + local.set $5 local.get $3 i32.const 1 i32.sub + local.get $3 i32.and if loop $do-continue|1 - local.get $0 local.get $2 i32.const 1 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 - local.get $4 + local.get $5 local.get $1 - local.get $4 + local.get $5 i64.div_u - local.tee $1 + local.tee $4 i64.mul i64.sub i32.wrap_i64 @@ -6353,7 +6325,8 @@ i32.add i32.load16_u i32.store16 - local.get $1 + local.get $4 + local.tee $1 i64.const 0 i64.ne br_if $do-continue|1 @@ -6364,22 +6337,22 @@ i32.const 7 i32.and i64.extend_i32_s - local.set $5 - local.get $4 + local.set $4 + local.get $5 i64.const 1 i64.sub - local.set $4 + local.set $5 loop $do-continue|0 - local.get $0 local.get $2 i32.const 1 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 - local.get $4 + local.get $5 i64.and i32.wrap_i64 i32.const 1 @@ -6389,7 +6362,7 @@ i32.load16_u i32.store16 local.get $1 - local.get $5 + local.get $4 i64.shr_u local.tee $1 i64.const 0 @@ -6406,14 +6379,6 @@ i64.const 100000000 i64.ge_u if - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add local.get $1 local.get $1 i64.const 100000000 @@ -6425,8 +6390,20 @@ i32.wrap_i64 local.tee $3 i32.const 10000 + i32.div_u + local.set $4 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 10000 i32.rem_u - local.tee $4 + local.tee $3 i32.const 100 i32.div_u i32.const 2 @@ -6434,7 +6411,7 @@ i32.const 15804 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -6446,18 +6423,15 @@ i64.shl i64.or i64.store - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add - local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 + local.get $4 i32.const 100 i32.div_u i32.const 2 @@ -6465,7 +6439,7 @@ i32.const 15804 i32.add i64.load32_u - local.get $3 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -6486,87 +6460,89 @@ local.get $2 call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) + (local $8 i32) + (local $9 i64) + (local $10 i32) (local $11 i64) - local.get $2 + (local $12 i64) + local.get $1 local.get $0 i64.sub - local.set $8 - local.get $2 + local.set $9 + local.get $1 i64.const 1 i32.const 0 - local.get $3 + local.get $2 i32.sub - local.tee $9 + local.tee $10 i64.extend_i32_s local.tee $0 i64.shl - local.tee $10 + local.tee $11 i64.const 1 i64.sub - local.tee $11 + local.tee $12 i64.and local.set $6 - local.get $2 + local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $1 - local.set $3 - local.get $1 + local.tee $2 + local.set $5 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $5 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $5 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $5 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $5 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $5 i32.const 100000000 i32.ge_u i32.add end end - local.set $7 + local.set $8 loop $while-continue|0 - local.get $7 + local.get $8 i32.const 0 i32.gt_s if @@ -6582,277 +6558,279 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $7 + local.get $8 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $1 + local.get $2 i32.const 1000000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 - local.set $3 + local.get $2 + local.set $5 i32.const 0 - local.set $1 + local.set $2 br $break|1 end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $4 local.get $5 i32.or if - local.get $5 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 i32.const 1 i32.shl i32.const 22864 i32.add - local.get $3 + local.get $5 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 + local.set $8 local.get $6 - local.get $1 + local.get $2 i64.extend_i32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $0 - local.get $4 + local.get $3 i64.le_u if - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 + local.get $8 i32.const 2 i32.shl i32.const 23792 i32.add i64.load32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 22862 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|3 - local.get $2 - local.get $4 + local.get $1 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $8 + local.get $9 i64.lt_u select if (result i32) i32.const 1 - local.get $8 + local.get $9 local.get $0 i64.sub local.get $0 - local.get $2 + local.get $1 i64.add local.tee $6 - local.get $8 + local.get $9 i64.sub i64.gt_u local.get $6 - local.get $8 + local.get $9 i64.lt_u select else i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $2 + local.get $1 i64.add local.set $0 br $while-continue|3 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 return end br $while-continue|0 end end - local.get $9 + local.get $10 i64.extend_i32_s local.set $0 loop $while-continue|4 - local.get $4 + local.get $3 i64.const 10 i64.mul - local.set $4 + local.set $3 local.get $6 i64.const 10 i64.mul - local.tee $2 + local.tee $1 local.get $0 i64.shr_u local.tee $6 - local.get $5 + local.get $4 i64.extend_i32_s i64.or i64.const 0 i64.ne if - local.get $5 + local.get $4 + local.tee $2 i32.const 1 - i32.shl - i32.const 22864 i32.add - local.get $6 + local.set $4 + local.get $2 + i32.const 1 + i32.shl + i32.const 22864 + i32.add + local.get $6 i32.wrap_i64 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 - local.get $4 - local.get $2 - local.get $11 + local.set $8 + local.get $3 + local.get $1 + local.get $12 i64.and local.tee $6 i64.le_u br_if $while-continue|4 end - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $6 local.set $0 - local.get $8 + local.get $9 i32.const 0 - local.get $7 + local.get $8 i32.sub i32.const 2 i32.shl @@ -6860,39 +6838,39 @@ i32.add i64.load32_u i64.mul - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 22862 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|6 - local.get $10 - local.get $4 + local.get $11 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $2 + local.get $1 i64.lt_u select if (result i32) i32.const 1 - local.get $2 + local.get $1 local.get $0 i64.sub local.get $0 - local.get $10 + local.get $11 i64.add local.tee $6 - local.get $2 + local.get $1 i64.sub i64.gt_u - local.get $2 + local.get $1 local.get $6 i64.gt_u select @@ -6900,21 +6878,21 @@ i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $10 + local.get $11 i64.add local.set $0 br $while-continue|6 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -7263,12 +7241,9 @@ (local $4 i32) (local $5 i32) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) local.get $0 f64.const 0 f64.lt @@ -7283,50 +7258,49 @@ local.get $0 end i64.reinterpret_f64 - local.tee $2 + local.tee $1 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $4 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $2 + local.get $1 i64.const 4503599627370495 i64.and i64.add - local.tee $1 + local.tee $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $2 + local.tee $1 + local.get $1 i64.clz i32.wrap_i64 - local.set $4 - local.get $2 - local.get $4 + local.tee $5 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $7 + local.get $4 i32.const 1 - local.get $7 + local.get $4 select i32.const 1075 i32.sub - local.tee $7 + local.tee $9 i32.const 1 i32.sub - local.get $4 + local.get $5 i32.sub local.set $4 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i64.const 4503599627370496 i64.eq i32.const 1 @@ -7336,7 +7310,7 @@ i64.shl i64.const 1 i64.sub - local.get $7 + local.get $9 local.get $5 i32.sub local.get $4 @@ -7387,95 +7361,86 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow + local.tee $6 + i64.const 4294967295 + i64.and + local.set $1 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_plus local.tee $3 i64.const 32 i64.shr_u - local.set $2 + local.tee $7 + i64.mul + local.get $1 + local.get $7 + i64.mul + local.get $1 local.get $3 i64.const 4294967295 i64.and local.tee $3 - global.get $~lib/util/number/_frc_plus - local.tee $6 + i64.mul i64.const 32 i64.shr_u - local.tee $11 - i64.mul + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add local.get $3 local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and - local.tee $12 - i64.mul + i64.add + i64.const 2147483647 + i64.add i64.const 32 i64.shr_u i64.add - local.set $6 + i64.const 1 + i64.sub + local.set $3 local.get $8 i32.const 1 i32.shl i32.const 22864 i32.add + local.get $6 + local.get $2 local.get $2 - local.get $1 - local.get $1 i64.clz - i32.wrap_i64 - local.tee $5 - i64.extend_i32_s i64.shl - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u - local.tee $10 - i64.mul - local.get $3 - local.get $10 + local.tee $7 i64.mul - local.get $3 local.get $1 - i64.const 4294967295 - i64.and - local.tee $1 + local.get $7 i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $10 - i64.const 32 - i64.shr_u - i64.add local.get $1 local.get $2 - i64.mul - local.get $10 i64.const 4294967295 i64.and - i64.add - i64.const 2147483647 - i64.add + local.tee $2 + i64.mul i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $9 - local.get $7 - local.get $5 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $2 - local.get $11 - i64.mul - local.get $6 + local.tee $7 i64.const 32 i64.shr_u i64.add local.get $2 - local.get $12 - i64.mul local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and i64.add @@ -7484,42 +7449,40 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $1 + local.get $3 local.get $4 - local.get $9 + global.get $~lib/util/number/_exp_pow i32.add i32.const -64 i32.sub - local.get $1 - local.get $2 + local.get $3 + local.get $6 global.get $~lib/util/number/_frc_minus - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u - local.tee $6 + local.tee $3 i64.mul + local.get $1 local.get $3 - local.get $6 i64.mul - local.get $3 local.get $1 + local.get $2 i64.const 4294967295 i64.and - local.tee $3 + local.tee $1 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $3 - i64.mul local.get $1 + local.get $6 + i64.mul + local.get $2 i64.const 4294967295 i64.and i64.add @@ -7578,34 +7541,35 @@ return end local.get $0 - i32.load offset=4 local.tee $1 + i32.load offset=4 + local.tee $2 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 - local.get $1 local.get $2 + local.get $3 i32.lt_u if - local.get $1 + local.get $2 i32.load - local.tee $3 + local.tee $0 if - local.get $3 + local.get $0 call $~lib/rt/itcms/__visit end - local.get $1 + local.get $2 i32.const 4 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end - local.get $0 + local.get $1 i32.load call $~lib/rt/itcms/__visit return @@ -8610,40 +8574,37 @@ local.get $1 i32.const 2176 i32.store offset=4 - block $__inlined_func$~lib/string/String#startsWith (result i32) - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $3 + local.get $1 + local.get $3 + i32.const 2172 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.add + i32.lt_s + if (result i32) i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - i32.const 0 - i32.gt_s - select - local.set $3 - i32.const 0 - local.get $1 - local.get $3 - i32.const 2172 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.add - i32.lt_s - br_if $__inlined_func$~lib/string/String#startsWith - drop - local.get $0 - local.get $3 - i32.const 2176 + else + local.get $0 + local.get $3 + i32.const 2176 local.get $1 call $~lib/util/string/compareImpl - i32.eqz end - i32.eqz if i32.const 0 i32.const 1120 @@ -22194,12 +22155,12 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - local.get $4 local.get $3 local.get $5 i32.sub local.tee $3 - i32.lt_u + local.get $4 + i32.gt_u if local.get $1 local.get $2 @@ -22211,11 +22172,11 @@ i32.div_u local.tee $6 call $~lib/memory/memory.repeat - local.get $1 local.get $4 local.get $6 i32.mul local.tee $4 + local.get $1 i32.add local.get $2 local.get $3 @@ -22272,6 +22233,10 @@ i32.const 1 i32.shl local.tee $3 + local.get $1 + i32.const 1 + i32.shl + local.tee $4 local.get $0 i32.const 20 i32.sub @@ -22280,12 +22245,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 - local.get $1 - i32.const 1 - i32.shl - local.tee $5 - i32.gt_u + local.tee $1 + i32.lt_u select i32.eqz if @@ -22297,26 +22258,26 @@ return end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store - local.get $1 + local.get $5 local.get $0 - local.get $4 + local.get $1 call $~lib/memory/memory.copy - local.get $3 - local.get $5 local.get $4 + local.get $1 i32.sub local.tee $0 - i32.lt_u + local.get $3 + i32.gt_u if local.get $1 - local.get $4 + local.get $5 i32.add - local.tee $4 + local.tee $1 local.get $2 local.get $3 local.get $0 @@ -22324,13 +22285,13 @@ i32.sub local.get $3 i32.div_u - local.tee $5 + local.tee $4 call $~lib/memory/memory.repeat - local.get $4 local.get $3 - local.get $5 + local.get $4 i32.mul local.tee $3 + local.get $1 i32.add local.get $2 local.get $0 @@ -22339,7 +22300,7 @@ call $~lib/memory/memory.copy else local.get $1 - local.get $4 + local.get $5 i32.add local.get $2 local.get $0 @@ -22349,7 +22310,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $5 ) (func $~lib/string/String#trimStart (param $0 i32) (result i32) (local $1 i32) @@ -23223,229 +23184,286 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 25884 - i32.lt_s - if - i32.const 42288 - i32.const 42336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $7 - i32.le_u - if - local.get $4 - local.get $7 - i32.ge_u - if - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - local.set $0 - end - br $folding-inner0 - end - local.get $2 - i32.const 20 + block $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - local.get $7 - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s if - local.get $3 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 - local.get $4 + i32.const 42288 + i32.const 42336 i32.const 1 - i32.add - i32.mul - i32.add i32.const 1 - i32.shl + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $5 - local.get $2 - local.get $3 + i32.shr_u + local.tee $8 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.set $1 - loop $for-loop|0 + i32.shr_u + local.tee $4 + i32.ge_u + if local.get $4 - local.get $9 - i32.gt_u + local.get $8 + i32.ge_u if - local.get $5 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $5 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.add local.get $2 - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + local.get $0 local.get $1 - local.get $3 - i32.add - local.set $1 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 end + br $folding-inner2 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - end - local.get $3 - local.get $7 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - local.tee $5 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - local.get $0 - local.get $5 - call $~lib/memory/memory.copy - loop $while-continue|1 - local.get $0 - local.get $1 - local.get $10 - call $~lib/string/String#indexOf - local.tee $5 - i32.const -1 - i32.xor - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - local.get $7 - i32.add - local.set $10 - br $while-continue|1 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - local.get $4 - local.set $5 - loop $while-continue|2 - local.get $0 - local.get $1 - local.get $10 - call $~lib/string/String#indexOf - local.tee $9 - i32.const -1 - i32.xor + i32.shr_u + local.set $3 + local.get $8 + i32.eqz if + local.get $3 + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $3 + local.get $4 + i32.const 1 + i32.add + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store local.get $11 - if (result i32) + local.get $2 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.set $1 + loop $for-loop|0 + local.get $4 + local.get $5 + i32.gt_u + if + local.get $11 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $11 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $3 + i32.add + local.set $1 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + br $folding-inner1 + end + local.get $3 + local.get $8 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 + local.get $0 + local.get $4 + call $~lib/memory/memory.copy + loop $while-continue|1 + local.get $0 + local.get $1 + local.get $10 + call $~lib/string/String#indexOf + local.tee $4 + i32.const -1 + i32.xor + if + local.get $5 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $4 + local.get $8 + i32.add + local.set $10 + br $while-continue|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $4 + local.set $5 + loop $while-continue|2 + local.get $0 + local.get $1 + local.get $10 + call $~lib/string/String#indexOf + local.tee $7 + i32.const -1 + i32.xor + if local.get $11 - i32.const 20 + if (result i32) + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + else + i32.const 0 + end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=4 + end + local.get $5 + local.get $3 + local.get $9 + local.get $7 + local.get $10 i32.sub - i32.load offset=16 + local.tee $6 + i32.add + i32.add + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=4 + end + local.get $11 + local.get $9 i32.const 1 - i32.shr_u - else - i32.const 0 - end - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $4 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $6 i32.const 1 i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $6 + local.get $9 + i32.add + local.tee $10 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=4 + i32.shl + i32.add + local.get $2 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $10 + i32.add + local.set $9 + local.get $7 + local.get $8 + i32.add + local.set $10 + br $while-continue|2 end + end + local.get $11 + if local.get $5 - local.get $3 - local.get $8 local.get $9 + local.get $4 local.get $10 i32.sub - local.tee $6 - i32.add + local.tee $1 i32.add i32.lt_u if @@ -23461,112 +23479,48 @@ local.tee $11 i32.store offset=4 end - local.get $11 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $11 - local.get $6 - local.get $8 - i32.add - local.tee $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $10 - i32.add - local.set $8 - local.get $7 - local.get $9 - i32.add - local.set $10 - br $while-continue|2 - end - end - local.get $11 - if - local.get $5 - local.get $8 - local.get $4 - local.get $10 - i32.sub - local.tee $1 - i32.add - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $1 + if + local.get $11 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end local.get $5 - i32.const 1 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - local.tee $11 - i32.store offset=4 - end - local.get $1 - if - local.get $11 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $10 - i32.const 1 - i32.shl - i32.add local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $5 - local.get $1 - local.get $8 - i32.add - local.tee $0 - i32.gt_u - if - global.get $~lib/memory/__stack_pointer - local.get $11 - local.get $0 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - local.tee $11 - i32.store offset=4 + local.get $9 + i32.add + local.tee $0 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $0 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=4 + end + br $folding-inner1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + br $folding-inner2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $11 return end global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index d1be29d48a..2f6f2466e8 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -440,8 +440,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -449,11 +447,12 @@ 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 $2 local.get $3 i32.const 4 @@ -461,6 +460,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -472,17 +472,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -688,7 +688,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -696,6 +695,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -711,7 +711,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -719,6 +718,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -773,11 +773,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1472 @@ -801,11 +801,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1472 @@ -965,17 +965,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1035,15 +1035,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1171,12 +1171,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1216,13 +1214,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1262,10 +1260,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1274,7 +1272,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1283,6 +1280,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1296,12 +1294,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1314,7 +1312,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1323,6 +1320,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1529,12 +1527,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1550,14 +1548,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1571,14 +1569,15 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.tee $5 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1589,14 +1588,13 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - local.get $6 + local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $2 i32.const 19 i32.add i32.const -16 @@ -1604,19 +1602,21 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if - local.get $3 + memory.size + local.tee $4 + local.get $2 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.const 27 - local.get $3 + local.get $2 i32.clz i32.sub i32.shl @@ -1624,17 +1624,16 @@ i32.sub i32.add else - local.get $3 + local.get $2 end i32.const 4 - memory.size - local.tee $6 + local.get $5 + i32.load offset=1568 + local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1644,18 +1643,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 + local.tee $3 + local.get $3 + local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1663,18 +1660,18 @@ unreachable end end - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $3 i32.eqz if i32.const 0 @@ -1685,8 +1682,8 @@ unreachable end end + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1699,13 +1696,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 + local.get $5 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 local.get $3 + i32.load + local.set $4 + local.get $2 i32.const 4 i32.add i32.const 15 @@ -1718,54 +1715,54 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const -4 i32.and - local.get $3 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if - local.get $6 local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.const 2 i32.and i32.or i32.store + local.get $2 local.get $3 - local.get $6 i32.const 4 i32.add i32.add - local.tee $3 - local.get $4 + local.tee $2 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $5 local.get $2 - local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $3 + local.get $4 i32.const -2 i32.and i32.store - local.get $6 + local.get $3 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $2 + local.get $3 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $3 - local.get $6 i32.load i32.const -4 i32.and @@ -1775,37 +1772,37 @@ i32.and i32.store end - local.get $6 + local.get $3 local.get $1 i32.store offset=12 - local.get $6 + local.get $3 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 - local.get $6 + local.set $2 local.get $3 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 - local.get $1 + local.get $3 + local.get $2 i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 + local.get $2 + local.get $3 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $3 - local.get $6 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.load i32.const -4 i32.and @@ -1813,7 +1810,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $3 i32.const 20 i32.add local.tee $1 @@ -1921,44 +1918,44 @@ local.get $7 i32.le_u if - local.get $2 local.get $1 i32.load i32.const -2048144777 i32.mul + local.get $2 i32.add i32.const 13 i32.rotl i32.const -1640531535 i32.mul local.set $2 - local.get $4 local.get $1 i32.load offset=4 i32.const -2048144777 i32.mul + local.get $4 i32.add i32.const 13 i32.rotl i32.const -1640531535 i32.mul local.set $4 - local.get $6 local.get $1 i32.load offset=8 i32.const -2048144777 i32.mul + local.get $6 i32.add i32.const 13 i32.rotl i32.const -1640531535 i32.mul local.set $6 - local.get $5 local.get $1 i32.load offset=12 i32.const -2048144777 i32.mul + local.get $5 i32.add i32.const 13 i32.rotl @@ -1972,7 +1969,6 @@ br $while-continue|0 end end - local.get $3 local.get $2 i32.const 1 i32.rotl @@ -1988,6 +1984,7 @@ i32.const 18 i32.rotl i32.add + local.get $3 i32.add else local.get $3 @@ -2006,11 +2003,11 @@ local.get $4 i32.le_u if - local.get $2 local.get $1 i32.load i32.const -1028477379 i32.mul + local.get $2 i32.add i32.const 17 i32.rotl @@ -2033,11 +2030,11 @@ local.get $1 i32.gt_u if - local.get $2 local.get $1 i32.load8_u i32.const 374761393 i32.mul + local.get $2 i32.add i32.const 11 i32.rotl @@ -2052,23 +2049,23 @@ end end local.get $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $0 - local.get $0 i32.const 13 i32.shr_u + local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 - local.get $0 i32.const 16 i32.shr_u + local.get $0 i32.xor else i32.const 0 @@ -2100,7 +2097,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -2114,18 +2111,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -2133,20 +2127,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -2159,33 +2153,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -2437,29 +2431,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2481,25 +2473,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u - local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2572,25 +2564,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2659,25 +2651,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2717,143 +2709,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2880,63 +2858,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2963,23 +2935,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -3514,22 +3484,22 @@ if global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/stringToId - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 1056 call $~lib/util/hash/HASH<~lib/string/String> call $~lib/map/Map<~lib/string/String,usize>#find if global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/stringToId - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 1056 call $~lib/util/hash/HASH<~lib/string/String> call $~lib/map/Map<~lib/string/String,usize>#find - local.tee $1 + local.tee $2 i32.eqz if i32.const 1648 @@ -3539,7 +3509,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3557,50 +3527,50 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $0 i32.store - local.get $1 + local.get $2 local.get $0 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $2 i32.const 3 i32.store offset=4 - local.get $1 + local.get $2 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $0 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $2 i32.const 4 i32.store offset=12 - local.get $1 + local.get $2 i32.const 0 i32.store offset=16 - local.get $1 + local.get $2 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 global.set $~lib/symbol/stringToId global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3611,58 +3581,58 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $0 i32.store - local.get $1 + local.get $2 local.get $0 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $2 i32.const 3 i32.store offset=4 - local.get $1 + local.get $2 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $0 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $2 i32.const 4 i32.store offset=12 - local.get $1 + local.get $2 i32.const 0 i32.store offset=16 - local.get $1 + local.get $2 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 global.set $~lib/symbol/idToString end global.get $~lib/symbol/nextId - local.tee $3 + local.tee $6 i32.const 1 i32.add global.set $~lib/symbol/nextId - local.get $3 + local.get $6 i32.eqz if unreachable @@ -3670,7 +3640,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $~lib/symbol/stringToId - local.tee $1 + local.tee $2 i32.store local.get $0 i32.const 4 @@ -3683,26 +3653,26 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 1056 call $~lib/util/hash/HASH<~lib/string/String> - local.tee $6 + local.tee $9 call $~lib/map/Map<~lib/string/String,usize>#find local.tee $0 if local.get $0 - local.get $3 + local.get $6 i32.store offset=4 else - local.get $1 + local.get $2 i32.load offset=16 - local.get $1 + local.get $2 i32.load offset=12 i32.eq if - local.get $1 + local.get $2 i32.load offset=20 - local.get $1 + local.get $2 i32.load offset=12 i32.const 3 i32.mul @@ -3710,10 +3680,10 @@ i32.div_s i32.lt_s if (result i32) - local.get $1 + local.get $2 i32.load offset=4 else - local.get $1 + local.get $2 i32.load offset=4 i32.const 1 i32.shl @@ -3744,7 +3714,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -3752,59 +3722,59 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $10 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $1 + local.get $2 i32.load offset=8 - local.tee $10 - local.get $1 + local.tee $3 + local.get $2 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $9 - local.get $2 + local.set $5 + local.get $1 local.set $0 loop $while-continue|0 - local.get $9 - local.get $10 + local.get $3 + local.get $5 i32.ne if - local.get $10 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $3 i32.load - local.tee $7 + local.tee $8 i32.store offset=8 local.get $0 - local.get $7 + local.get $8 i32.store local.get $0 - local.get $10 + local.get $3 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $8 local.get $7 + local.get $8 call $~lib/util/hash/HASH<~lib/string/String> local.get $4 i32.and i32.const 2 i32.shl i32.add - local.tee $7 + local.tee $8 i32.load i32.store offset=8 - local.get $7 + local.get $8 local.get $0 i32.store local.get $0 @@ -3812,35 +3782,35 @@ i32.add local.set $0 end - local.get $10 + local.get $3 i32.const 12 i32.add - local.set $10 + local.set $3 br $while-continue|0 end end - local.get $1 - local.get $8 + local.get $2 + local.get $7 i32.store - local.get $1 - local.get $8 + local.get $2 + local.get $7 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $2 local.get $4 i32.store offset=4 - local.get $1 local.get $2 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $2 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $2 + local.get $10 i32.store offset=12 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -3849,12 +3819,12 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.load offset=8 local.tee $0 i32.store - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=16 local.tee $4 i32.const 1 @@ -3868,33 +3838,33 @@ local.tee $0 i32.const 1056 i32.store - local.get $1 + local.get $2 i32.const 1056 i32.const 1 call $~lib/rt/itcms/__link local.get $0 - local.get $3 + local.get $6 i32.store offset=4 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $1 + local.get $2 i32.load - local.get $6 - local.get $1 + local.get $9 + local.get $2 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store end @@ -3903,11 +3873,11 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $~lib/symbol/idToString local.tee $0 + global.get $~lib/symbol/idToString + local.tee $2 i32.store - local.get $1 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3918,10 +3888,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 + local.get $2 i32.load - local.get $3 - local.tee $2 + local.get $6 i32.const -1028477379 i32.mul i32.const 374761397 @@ -3930,81 +3899,81 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor - local.tee $7 - local.get $0 + local.tee $8 + local.get $2 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find - loop $while-continue|01 - local.get $1 + loop $while-continue|00 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 - local.get $1 + local.get $6 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|01 + local.set $0 + br $while-continue|00 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.const 1056 i32.store offset=4 - local.get $0 + local.get $2 i32.const 1056 i32.const 1 call $~lib/rt/itcms/__link else - local.get $0 + local.get $2 i32.load offset=16 - local.get $0 + local.get $2 i32.load offset=12 i32.eq if - local.get $0 + local.get $2 i32.load offset=20 - local.get $0 + local.get $2 i32.load offset=12 i32.const 3 i32.mul @@ -4012,17 +3981,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $0 + local.get $2 i32.load offset=4 else - local.get $0 + local.get $2 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4032,66 +4001,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 1 i32.add - local.tee $1 + local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $9 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $2 i32.load offset=8 - local.tee $10 - local.get $0 + local.tee $3 + local.get $2 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $5 - local.get $4 - local.set $1 - loop $while-continue|02 - local.get $5 + local.set $10 + local.get $1 + local.set $0 + loop $while-continue|01 + local.get $3 local.get $10 i32.ne if - local.get $10 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $1 - local.get $10 + local.get $0 + local.get $3 i32.load - local.tee $9 + local.tee $5 i32.store - local.get $1 - local.get $10 + local.get $0 + local.get $3 i32.load offset=4 i32.store offset=4 - local.get $1 - local.get $8 - local.get $3 - local.get $9 + local.get $0 + local.get $7 + local.get $4 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761397 @@ -4100,22 +4069,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u i32.xor @@ -4123,46 +4092,46 @@ i32.const 2 i32.shl i32.add - local.tee $9 + local.tee $5 i32.load i32.store offset=8 - local.get $9 - local.get $1 + local.get $5 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 12 i32.add - local.set $1 + local.set $0 end - local.get $10 + local.get $3 i32.const 12 i32.add - local.set $10 - br $while-continue|02 + local.set $3 + br $while-continue|01 end end - local.get $0 - local.get $8 + local.get $2 + local.get $7 i32.store - local.get $0 - local.get $8 + local.get $2 + local.get $7 i32.const 0 call $~lib/rt/itcms/__link - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 + local.get $2 local.get $4 + i32.store offset=4 + local.get $2 + local.get $1 i32.store offset=8 - local.get $0 - local.get $4 + local.get $2 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link - local.get $0 - local.get $6 + local.get $2 + local.get $9 i32.store offset=12 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -4171,53 +4140,53 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.load offset=8 - local.tee $1 + local.tee $0 i32.store - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=16 - local.tee $3 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 12 i32.mul i32.add - local.tee $1 - local.get $2 + local.tee $0 + local.get $6 i32.store - local.get $1 + local.get $0 i32.const 1056 i32.store offset=4 - local.get $0 + local.get $2 i32.const 1056 i32.const 1 call $~lib/rt/itcms/__link - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $1 local.get $0 + local.get $2 i32.load - local.get $7 - local.get $0 + local.get $8 + local.get $2 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $0 + local.tee $2 i32.load i32.store offset=8 + local.get $2 local.get $0 - local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -4228,7 +4197,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $6 return end i32.const 19104 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index cc5c2be38f..44be52a890 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -35,7 +35,7 @@ (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_i64_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i64 i32 i64 i32) (result i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1000,8 +1000,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -1009,11 +1007,12 @@ 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 $2 local.get $3 i32.const 4 @@ -1021,6 +1020,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -1032,17 +1032,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1248,7 +1248,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1256,6 +1255,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -1271,7 +1271,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -1279,6 +1278,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -1333,11 +1333,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1504 @@ -1361,11 +1361,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1504 @@ -1538,12 +1538,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1577,17 +1575,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1647,15 +1645,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1781,13 +1779,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1827,10 +1825,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1839,7 +1837,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1848,6 +1845,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1861,12 +1859,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1879,7 +1877,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1888,6 +1885,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1895,11 +1893,19 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + local.get $0 i32.const 1073741820 i32.gt_u if @@ -1911,14 +1917,12 @@ unreachable end local.get $0 - local.tee $2 - local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $1 + local.get $0 i32.const 19 i32.add i32.const -16 @@ -1931,6 +1935,8 @@ local.tee $1 i32.eqz if + memory.size + local.tee $2 local.get $0 i32.const 536870910 i32.lt_u @@ -1949,14 +1955,13 @@ local.get $0 end i32.const 4 - memory.size - local.tee $1 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1966,18 +1971,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1985,15 +1988,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -2021,12 +2024,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $3 + local.set $2 local.get $0 i32.const 4 i32.add @@ -2040,7 +2043,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const -4 i32.and local.get $0 @@ -2051,7 +2054,7 @@ if local.get $1 local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.and i32.or @@ -2068,12 +2071,12 @@ i32.const 1 i32.or i32.store - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -2098,6 +2101,8 @@ i32.store end local.get $1 + i32.const 4 + i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2245,19 +2250,19 @@ i32.and i32.const 24 i32.add - local.tee $3 + local.tee $5 i32.add local.set $1 local.get $2 - local.get $3 + local.get $5 i32.sub local.set $2 local.get $0 i64.extend_i32_u local.tee $4 - local.get $4 i64.const 32 i64.shl + local.get $4 i64.or local.set $4 loop $while-continue|0 @@ -2352,15 +2357,9 @@ local.get $0 i32.const 16 i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub local.tee $2 local.get $1 i32.store offset=12 @@ -2999,12 +2998,12 @@ global.set $~lib/memory/__stack_pointer ) (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -3023,12 +3022,12 @@ i32.store ) (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -3046,12 +3045,12 @@ i32.load ) (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) - local.get $1 local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -3074,25 +3073,24 @@ (local $6 f64) (local $7 f64) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add local.tee $8 - i32.const 1 - i32.and - local.get $3 - local.get $8 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $8 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $8 loop $for-loop|0 @@ -3106,12 +3104,12 @@ i32.shl i32.add local.tee $3 - f64.load - local.set $5 - local.get $3 f64.load offset=8 local.tee $7 local.set $6 + local.get $3 + f64.load + local.set $5 i32.const 2 global.set $~argumentsLength local.get $5 @@ -3137,10 +3135,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add f64.load local.set $7 @@ -3154,10 +3152,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $7 f64.store offset=16 @@ -3169,10 +3167,10 @@ end end end - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $5 f64.store offset=16 @@ -3182,10 +3180,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add f64.load local.set $5 @@ -3199,10 +3197,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $5 f64.store offset=8 @@ -3214,10 +3212,10 @@ end end end - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $6 f64.store offset=8 @@ -3241,19 +3239,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add f64.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 3 i32.shl + local.get $0 i32.add f64.load i32.const 2 @@ -3317,14 +3315,14 @@ i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $7 f64.load f64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 + local.get $7 local.get $5 f64.store local.get $2 @@ -3414,17 +3412,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $9 local.get $6 i32.sub i32.const 3 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 3 i32.shl + local.get $0 i32.add f64.load offset=8 f64.store @@ -3440,17 +3438,17 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 3 i32.shl + local.get $4 i32.add f64.load local.set $7 - local.get $4 local.get $2 i32.const 3 i32.shl + local.get $4 i32.add f64.load local.set $8 @@ -3464,10 +3462,10 @@ i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add local.get $7 f64.store @@ -3476,10 +3474,10 @@ i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add local.get $8 f64.store @@ -3506,11 +3504,10 @@ (local $9 i64) (local $10 i32) (local $11 i32) - (local $12 f64) + (local $12 i32) (local $13 i32) (local $14 f64) - (local $15 i32) - (local $16 f64) + (local $15 f64) local.get $1 i32.const 48 i32.le_s @@ -3524,10 +3521,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -3535,7 +3533,7 @@ end local.get $0 f64.load - local.set $16 + local.set $15 local.get $0 f64.load offset=8 local.set $14 @@ -3543,8 +3541,8 @@ global.set $~argumentsLength local.get $0 local.get $14 - local.get $16 - local.get $16 + local.get $15 + local.get $15 local.get $14 local.get $2 i32.load @@ -3554,39 +3552,39 @@ local.tee $1 select f64.store + local.get $15 + local.get $14 + local.get $1 + select + local.set $15 local.get $0 f64.load offset=16 - local.set $12 + local.set $14 i32.const 2 global.set $~argumentsLength - local.get $16 + local.get $0 + local.get $14 + local.get $15 + local.get $15 local.get $14 - local.get $1 - select - local.tee $16 - local.get $12 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.gt_s - local.set $1 - local.get $0 - local.get $12 - local.get $16 - local.get $1 + local.tee $1 select f64.store offset=8 local.get $0 - local.get $16 - local.get $12 + local.get $15 + local.get $14 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $16 + local.set $15 local.get $0 f64.load offset=8 local.set $14 @@ -3594,8 +3592,8 @@ global.set $~argumentsLength local.get $0 local.get $14 - local.get $16 - local.get $16 + local.get $15 + local.get $15 local.get $14 local.get $2 i32.load @@ -3606,7 +3604,7 @@ select f64.store local.get $0 - local.get $16 + local.get $15 local.get $14 local.get $1 select @@ -3615,7 +3613,7 @@ end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -3627,38 +3625,28 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $13 + call $~lib/rt/tlsf/__alloc + local.tee $12 local.get $7 i32.add local.set $11 i32.const 0 local.set $7 loop $for-loop|1 - local.get $5 + local.get $6 local.get $7 i32.gt_u if - local.get $13 local.get $7 i32.const 2 i32.shl + local.get $12 i32.add i32.const -1 i32.store @@ -3672,97 +3660,87 @@ local.get $1 i32.const 3 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.set $10 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $15 + local.tee $13 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $5 i32.const 1 i32.add - local.tee $7 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $15 + local.get $13 i32.const 31 - local.get $15 + local.get $13 i32.const 31 i32.lt_s select - local.tee $1 - local.get $7 + local.tee $5 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $15 + local.get $5 + local.get $13 i32.lt_s if local.get $0 - local.get $1 + local.get $5 i32.const 1 i32.add - local.tee $5 - local.get $15 + local.tee $6 + local.get $13 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 - local.get $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $15 - local.get $5 + local.get $6 + local.get $13 + local.get $6 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $15 + local.tee $1 + local.get $1 + local.get $13 i32.gt_s select local.tee $7 - local.get $4 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $15 + local.get $13 i32.const 1 i32.add i64.extend_i32_u local.tee $9 i64.div_u - local.get $5 + local.get $6 local.get $7 i32.add i32.const 1 @@ -3775,26 +3753,28 @@ i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $6 + local.get $1 + local.get $8 i32.lt_u if - local.get $13 - local.get $6 + local.get $8 i32.const 2 i32.shl + local.get $12 i32.add i32.load - local.tee $8 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $8 + local.get $4 local.get $11 - local.get $6 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -3802,54 +3782,54 @@ i32.load i32.const 1 i32.add - local.get $1 + local.get $5 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $12 i32.add i32.const -1 i32.store - local.get $8 + local.get $4 local.set $3 end - local.get $6 + local.get $8 i32.const 1 i32.sub - local.set $6 + local.set $8 br $for-loop|3 end end - local.get $13 - local.get $4 + local.get $12 + local.get $1 i32.const 2 i32.shl - local.tee $6 + local.tee $4 i32.add local.get $3 i32.store - local.get $6 + local.get $4 local.get $11 i32.add - local.get $1 - i32.store local.get $5 + i32.store + local.get $6 local.set $3 local.get $7 - local.set $1 - local.get $4 - local.set $6 + local.set $5 + local.get $1 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $4 if - local.get $13 - local.get $6 + local.get $4 i32.const 2 i32.shl + local.get $12 i32.add i32.load local.tee $1 @@ -3858,29 +3838,29 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $15 + local.get $13 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end local.get $10 call $~lib/rt/tlsf/__free - local.get $13 + local.get $12 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) @@ -3889,21 +3869,21 @@ local.get $0 i64.reinterpret_f64 local.tee $2 - local.get $2 i64.const 63 i64.shr_s i64.const 1 i64.shr_u + local.get $2 i64.xor local.tee $2 local.get $1 i64.reinterpret_f64 local.tee $3 - local.get $3 i64.const 63 i64.shr_s i64.const 1 i64.shr_u + local.get $3 i64.xor local.tee $3 i64.gt_s @@ -3913,12 +3893,12 @@ i32.sub ) (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -3936,10 +3916,10 @@ f64.load ) (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -3968,10 +3948,10 @@ i32.store8 ) (func $~lib/typedarray/Uint8ClampedArray#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -3987,10 +3967,10 @@ i32.load8_u ) (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -4009,18 +3989,20 @@ (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) + local.get $1 + local.set $4 local.get $0 i32.load offset=4 local.set $5 local.get $0 i32.load offset=8 - local.set $4 + local.set $1 local.get $2 i32.const 0 i32.lt_s if (result i32) + local.get $1 local.get $2 - local.get $4 i32.add local.tee $0 i32.const 0 @@ -4030,43 +4012,43 @@ select else local.get $2 - local.get $4 + local.get $1 + local.get $1 local.get $2 - local.get $4 - i32.lt_s + i32.gt_s select end - local.tee $2 + local.tee $0 local.get $3 i32.const 0 i32.lt_s if (result i32) + local.get $1 local.get $3 - local.get $4 i32.add - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select else local.get $3 - local.get $4 + local.get $1 + local.get $1 local.get $3 - local.get $4 - i32.lt_s + i32.gt_s select end - local.tee $0 + local.tee $1 i32.lt_s if - local.get $2 + local.get $0 local.get $5 i32.add + local.get $4 local.get $1 local.get $0 - local.get $2 i32.sub call $~lib/memory/memory.fill end @@ -4234,29 +4216,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -4278,25 +4258,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -4369,25 +4349,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -4456,25 +4436,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -4514,143 +4494,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -4677,63 +4643,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -4760,23 +4720,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -5019,10 +4977,10 @@ end ) (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5060,10 +5018,10 @@ local.get $0 local.get $2 call $~lib/typedarray/Int8Array#__get - local.get $2 local.get $1 i32.load offset=12 - i32.ge_u + local.get $2 + i32.le_u if i32.const 1360 i32.const 1760 @@ -5072,9 +5030,9 @@ call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 i32.load offset=4 - local.get $2 i32.add i32.load8_s i32.ne @@ -5092,10 +5050,10 @@ i32.const 1 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=12 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1760 @@ -5159,109 +5117,107 @@ (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $3 local.get $0 - local.tee $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $5 + local.tee $4 local.get $3 - local.get $5 + local.get $4 i32.lt_s select local.set $3 local.get $0 i32.load offset=4 - local.tee $6 + local.tee $5 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $5 + local.get $4 i32.add - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select else local.get $1 - local.get $5 + local.get $4 local.get $1 - local.get $5 + local.get $4 i32.lt_s select end - local.tee $0 + local.tee $1 i32.const 2 i32.shl i32.add - local.get $6 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $5 + local.get $4 i32.add - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select else local.get $2 - local.get $5 + local.get $4 local.get $2 - local.get $5 + local.get $4 i32.lt_s select end - local.tee $1 + local.tee $2 i32.const 2 i32.shl + local.get $5 i32.add local.get $3 i32.const 0 i32.lt_s if (result i32) local.get $3 - local.get $5 + local.get $4 i32.add - local.tee $2 + local.tee $3 i32.const 0 - local.get $2 + local.get $3 i32.const 0 i32.gt_s select else local.get $3 - local.get $5 + local.get $4 local.get $3 - local.get $5 + local.get $4 i32.lt_s select end + local.get $2 + i32.sub + local.tee $2 + local.get $4 local.get $1 i32.sub local.tee $1 - local.get $5 - local.get $0 - i32.sub - local.tee $0 - local.get $0 local.get $1 + local.get $2 i32.gt_s select i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $0 ) (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 @@ -5269,10 +5225,10 @@ i32.add ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5289,12 +5245,12 @@ i32.store8 ) (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 i32.load offset=8 i32.const 1 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5313,12 +5269,12 @@ i32.store16 ) (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 i32.load offset=8 i32.const 1 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5337,12 +5293,12 @@ i32.store16 ) (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5361,12 +5317,12 @@ i32.store ) (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5390,12 +5346,12 @@ i64.add ) (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5414,12 +5370,12 @@ i64.store ) (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - local.get $1 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5449,7 +5405,6 @@ ) (func $~lib/typedarray/Int8Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5458,6 +5413,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5478,7 +5434,6 @@ ) (func $~lib/typedarray/Uint8Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5487,6 +5442,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5507,7 +5463,6 @@ ) (func $~lib/typedarray/Uint8ClampedArray#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5516,6 +5471,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5536,7 +5492,6 @@ ) (func $~lib/typedarray/Int16Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5547,6 +5502,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5569,7 +5525,6 @@ ) (func $~lib/typedarray/Uint16Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5580,6 +5535,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5602,7 +5558,6 @@ ) (func $~lib/typedarray/Int32Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5613,6 +5568,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5635,7 +5591,6 @@ ) (func $~lib/typedarray/Uint32Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5646,6 +5601,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5668,7 +5624,6 @@ ) (func $~lib/typedarray/Int64Array#at (param $0 i32) (param $1 i32) (result i64) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5679,6 +5634,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5701,7 +5657,6 @@ ) (func $~lib/typedarray/Uint64Array#at (param $0 i32) (param $1 i32) (result i64) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5712,6 +5667,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5734,7 +5690,6 @@ ) (func $~lib/typedarray/Float32Array#at (param $0 i32) (param $1 i32) (result f32) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5745,6 +5700,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5767,7 +5723,6 @@ ) (func $~lib/typedarray/Float64Array#at (param $0 i32) (param $1 i32) (result f64) (local $2 i32) - local.get $1 i32.const 0 local.get $0 i32.load offset=8 @@ -5778,6 +5733,7 @@ i32.const 0 i32.ge_s select + local.get $1 i32.add local.tee $1 local.get $2 @@ -5804,10 +5760,10 @@ i32.mul ) (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5823,12 +5779,12 @@ i32.load8_u ) (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 i32.const 1 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5846,12 +5802,12 @@ i32.load16_s ) (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 i32.const 1 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5869,12 +5825,12 @@ i32.load16_u ) (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5897,12 +5853,12 @@ i64.mul ) (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5920,12 +5876,12 @@ i64.load ) (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5948,12 +5904,12 @@ f32.mul ) (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.ge_u + local.get $1 + i32.le_u if i32.const 1360 i32.const 1632 @@ -5984,7 +5940,6 @@ (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.const 20 i32.sub @@ -5994,7 +5949,8 @@ i32.and i32.const 16 i32.sub - i32.le_u + local.get $1 + i32.ge_u if local.get $2 local.get $1 @@ -6011,10 +5967,10 @@ local.get $1 local.get $2 i32.load offset=16 - local.tee $0 - local.get $0 + local.tee $2 local.get $1 - i32.gt_u + local.get $2 + i32.lt_u select call $~lib/memory/memory.copy local.get $3 @@ -6256,86 +6212,88 @@ i32.shl end local.set $1 - block $folding-inner0 - loop $while-continue|0 - local.get $2 - i32.const 128 - i32.gt_s - if + loop $while-continue|0 + local.get $2 + i32.const 128 + i32.gt_s + if + local.get $1 + i32.const 8388608 + i32.ge_u + if (result i32) + local.get $0 + f32.const 0 + f32.mul + local.get $1 + i32.const 8388608 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop local.get $1 i32.const 8388608 - i32.ge_u - if (result i32) - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - else - local.get $1 - end - i32.const 1 - i32.shl - local.set $1 - local.get $2 - i32.const 1 i32.sub - local.set $2 - br $while-continue|0 + else + local.get $1 end + i32.const 1 + i32.shl + local.set $1 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 end + end + local.get $1 + i32.const 8388608 + i32.ge_u + if + local.get $0 + f32.const 0 + f32.mul local.get $1 i32.const 8388608 - i32.ge_u - if - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - local.set $1 - end + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop local.get $1 + i32.const 8388608 + i32.sub + local.set $1 + end + local.get $1 + local.get $1 + i32.const 8 + i32.shl + i32.clz + local.tee $3 + i32.shl + local.set $1 + local.get $2 + local.get $3 + i32.sub + local.tee $2 + i32.const 0 + i32.gt_s + if (result i32) local.get $1 - i32.const 8 - i32.shl - i32.clz - local.tee $3 + i32.const 8388608 + i32.sub + local.get $2 + i32.const 23 i32.shl - local.set $1 + i32.or + else + local.get $1 + i32.const 1 local.get $2 - local.get $3 i32.sub - local.tee $2 - i32.const 0 - i32.gt_s - if (result i32) - local.get $1 - i32.const 8388608 - i32.sub - local.get $2 - i32.const 23 - i32.shl - i32.or - else - local.get $1 - i32.const 1 - local.get $2 - i32.sub - i32.shr_u - end - local.get $4 - i32.or - f32.reinterpret_i32 - br $__inlined_func$~lib/math/NativeMathf.mod + i32.shr_u end - local.get $0 - f32.const 0 - f32.mul + local.get $4 + i32.or + f32.reinterpret_i32 end f32.const 0 f32.eq @@ -6348,16 +6306,16 @@ block $__inlined_func$~lib/math/NativeMath.mod (result f64) local.get $0 i64.reinterpret_f64 - local.tee $4 + local.tee $3 i64.const 63 i64.shr_u local.set $6 - local.get $4 + local.get $3 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $5 + local.tee $4 i64.const 2047 i64.eq if @@ -6369,125 +6327,127 @@ f64.div br $__inlined_func$~lib/math/NativeMath.mod end - local.get $4 + local.get $3 i64.const 1 i64.shl - local.tee $3 + local.tee $5 i64.const -9223372036854775808 i64.le_u if local.get $0 - local.get $3 + local.get $5 i64.const -9223372036854775808 i64.ne f64.convert_i32_u f64.mul br $__inlined_func$~lib/math/NativeMath.mod end - local.get $5 + local.get $4 i64.eqz if (result i64) - local.get $4 + local.get $3 i64.const 1 - local.get $5 local.get $4 + local.get $3 i64.const 12 i64.shl i64.clz i64.sub - local.tee $5 + local.tee $4 i64.sub i64.shl else - local.get $4 + local.get $3 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $3 - block $folding-inner0 - loop $while-continue|0 - local.get $5 - i64.const 1024 - i64.gt_s - if + loop $while-continue|0 + local.get $4 + i64.const 1024 + i64.gt_s + if + local.get $3 + i64.const 4503599627370496 + i64.ge_u + if (result i64) + local.get $0 + f64.const 0 + f64.mul + local.get $3 + i64.const 4503599627370496 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop local.get $3 i64.const 4503599627370496 - i64.ge_u - if (result i64) - local.get $3 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $3 - i64.const 4503599627370496 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $5 - i64.const 1 i64.sub - local.set $5 - br $while-continue|0 + else + local.get $3 end - end - local.get $3 - i64.const 4503599627370496 - i64.ge_u - if - local.get $3 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $3 - i64.const 4503599627370496 - i64.sub + i64.const 1 + i64.shl local.set $3 + local.get $4 + i64.const 1 + i64.sub + local.set $4 + br $while-continue|0 end + end + local.get $3 + i64.const 4503599627370496 + i64.ge_u + if + local.get $0 + f64.const 0 + f64.mul local.get $3 + i64.const 4503599627370496 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $3 - i64.shl - local.set $4 - local.get $5 + i64.const 4503599627370496 + i64.sub + local.set $3 + end + local.get $3 + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $5 + i64.shl + local.set $3 + local.get $4 + local.get $5 + i64.sub + local.tee $4 + i64.const 0 + i64.gt_s + if (result i64) local.get $3 + i64.const 4503599627370496 i64.sub - local.tee $3 - i64.const 0 - i64.gt_s - if (result i64) - local.get $4 - i64.const 4503599627370496 - i64.sub - local.get $3 - i64.const 52 - i64.shl - i64.or - else - local.get $4 - i64.const 1 - local.get $3 - i64.sub - i64.shr_u - end - local.get $6 - i64.const 63 + local.get $4 + i64.const 52 i64.shl i64.or - f64.reinterpret_i64 - br $__inlined_func$~lib/math/NativeMath.mod + else + local.get $3 + i64.const 1 + local.get $4 + i64.sub + i64.shr_u end - local.get $0 - f64.const 0 - f64.mul + local.get $6 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 end f64.const 0 f64.eq @@ -6514,45 +6474,45 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7728 i32.store - local.get $0 + local.get $1 i32.const 7740 i32.load - local.tee $0 + local.tee $1 call $~lib/typedarray/Int8Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 i32.load offset=8 @@ -6567,28 +6527,28 @@ i32.load offset=4 local.set $3 loop $while-continue|0 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -6598,9 +6558,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 local.get $2 i32.load offset=8 @@ -6615,29 +6575,29 @@ i32.load offset=4 local.set $3 loop $while-continue|02 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -6649,9 +6609,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 local.get $2 i32.load offset=8 @@ -6666,29 +6626,29 @@ i32.load offset=4 local.set $3 loop $while-continue|05 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 255 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -6700,9 +6660,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 local.get $2 i32.load offset=8 @@ -6717,29 +6677,29 @@ i32.load offset=4 local.set $3 loop $while-continue|08 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -6751,9 +6711,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 local.get $2 i32.load offset=8 @@ -6768,29 +6728,29 @@ i32.load offset=4 local.set $3 loop $while-continue|011 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -6802,9 +6762,9 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 local.get $2 i32.load offset=8 @@ -6819,29 +6779,29 @@ i32.load offset=4 local.set $3 loop $while-continue|014 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -6853,9 +6813,9 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 local.get $2 i32.load offset=8 @@ -6870,29 +6830,29 @@ i32.load offset=4 local.set $3 loop $while-continue|017 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -6904,9 +6864,9 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 local.get $2 i32.load offset=8 @@ -6921,29 +6881,29 @@ i32.load offset=4 local.set $3 loop $while-continue|020 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -7586,9 +7546,9 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 local.get $4 i32.load offset=8 @@ -7603,29 +7563,29 @@ i32.load offset=4 local.set $2 loop $while-continue|042 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -7637,9 +7597,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 local.get $4 i32.load offset=8 @@ -7654,29 +7614,29 @@ i32.load offset=4 local.set $2 loop $while-continue|045 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -7686,9 +7646,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 local.get $4 i32.load offset=8 @@ -7703,29 +7663,29 @@ i32.load offset=4 local.set $2 loop $while-continue|048 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -7737,9 +7697,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 local.get $4 i32.load offset=8 @@ -7754,29 +7714,29 @@ i32.load offset=4 local.set $2 loop $while-continue|051 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -7788,9 +7748,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 local.get $4 i32.load offset=8 @@ -7805,29 +7765,29 @@ i32.load offset=4 local.set $2 loop $while-continue|054 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -7839,9 +7799,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 local.get $4 i32.load offset=8 @@ -7856,29 +7816,29 @@ i32.load offset=4 local.set $2 loop $while-continue|057 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -7890,9 +7850,9 @@ unreachable end i32.const 1 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 local.get $4 i32.load offset=8 @@ -7907,29 +7867,29 @@ i32.load offset=4 local.set $2 loop $while-continue|060 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -7941,9 +7901,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 local.get $4 i32.load offset=8 @@ -7958,29 +7918,29 @@ i32.load offset=4 local.set $2 loop $while-continue|063 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|063 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -8018,46 +7978,46 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7728 i32.store - local.get $0 + local.get $1 i32.const 7740 i32.load - local.tee $0 + local.tee $1 call $~lib/typedarray/Uint8Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=8 @@ -8072,28 +8032,28 @@ i32.load offset=4 local.set $3 loop $while-continue|0 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -8103,9 +8063,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=8 @@ -8120,29 +8080,29 @@ i32.load offset=4 local.set $3 loop $while-continue|02 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -8154,9 +8114,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 local.get $2 i32.load offset=8 @@ -8171,29 +8131,29 @@ i32.load offset=4 local.set $3 loop $while-continue|05 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 255 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -8205,9 +8165,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 local.get $2 i32.load offset=8 @@ -8222,29 +8182,29 @@ i32.load offset=4 local.set $3 loop $while-continue|08 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -8256,9 +8216,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 local.get $2 i32.load offset=8 @@ -8273,29 +8233,29 @@ i32.load offset=4 local.set $3 loop $while-continue|011 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -8307,9 +8267,9 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=8 @@ -8324,29 +8284,29 @@ i32.load offset=4 local.set $3 loop $while-continue|014 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -8358,9 +8318,9 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 local.get $2 i32.load offset=8 @@ -8375,29 +8335,29 @@ i32.load offset=4 local.set $3 loop $while-continue|017 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -8409,9 +8369,9 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 local.get $2 i32.load offset=8 @@ -8426,29 +8386,29 @@ i32.load offset=4 local.set $3 loop $while-continue|020 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9090,9 +9050,9 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 local.get $4 i32.load offset=8 @@ -9107,29 +9067,29 @@ i32.load offset=4 local.set $2 loop $while-continue|042 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9141,9 +9101,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 local.get $4 i32.load offset=8 @@ -9158,29 +9118,29 @@ i32.load offset=4 local.set $2 loop $while-continue|045 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -9190,9 +9150,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $4 i32.load offset=8 @@ -9207,29 +9167,29 @@ i32.load offset=4 local.set $2 loop $while-continue|048 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -9241,9 +9201,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 local.get $4 i32.load offset=8 @@ -9258,29 +9218,29 @@ i32.load offset=4 local.set $2 loop $while-continue|051 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9292,9 +9252,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 local.get $4 i32.load offset=8 @@ -9309,29 +9269,29 @@ i32.load offset=4 local.set $2 loop $while-continue|054 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9343,9 +9303,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 local.get $4 i32.load offset=8 @@ -9360,29 +9320,29 @@ i32.load offset=4 local.set $2 loop $while-continue|057 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9394,9 +9354,9 @@ unreachable end i32.const 1 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $4 i32.load offset=8 @@ -9411,29 +9371,29 @@ i32.load offset=4 local.set $2 loop $while-continue|060 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -9445,9 +9405,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 local.get $4 i32.load offset=8 @@ -9462,29 +9422,29 @@ i32.load offset=4 local.set $2 loop $while-continue|063 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|063 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9522,46 +9482,46 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7728 i32.store - local.get $0 + local.get $1 i32.const 7740 i32.load - local.tee $0 + local.tee $1 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=8 @@ -9576,28 +9536,28 @@ i32.load offset=4 local.set $3 loop $while-continue|0 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -9607,9 +9567,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=8 @@ -9624,29 +9584,29 @@ i32.load offset=4 local.set $3 loop $while-continue|02 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9658,9 +9618,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 local.get $2 i32.load offset=8 @@ -9675,29 +9635,29 @@ i32.load offset=4 local.set $3 loop $while-continue|05 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 255 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9709,9 +9669,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 local.get $2 i32.load offset=8 @@ -9726,29 +9686,29 @@ i32.load offset=4 local.set $3 loop $while-continue|08 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -9760,9 +9720,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 local.get $2 i32.load offset=8 @@ -9777,29 +9737,29 @@ i32.load offset=4 local.set $3 loop $while-continue|011 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -9811,9 +9771,9 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=8 @@ -9828,29 +9788,29 @@ i32.load offset=4 local.set $3 loop $while-continue|014 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -9862,9 +9822,9 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 local.get $2 i32.load offset=8 @@ -9879,29 +9839,29 @@ i32.load offset=4 local.set $3 loop $while-continue|017 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9913,9 +9873,9 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 local.get $2 i32.load offset=8 @@ -9930,29 +9890,29 @@ i32.load offset=4 local.set $3 loop $while-continue|020 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $3 i32.add i32.load8_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -10594,9 +10554,9 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 local.get $4 i32.load offset=8 @@ -10611,29 +10571,29 @@ i32.load offset=4 local.set $2 loop $while-continue|042 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -10645,9 +10605,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 local.get $4 i32.load offset=8 @@ -10662,29 +10622,29 @@ i32.load offset=4 local.set $2 loop $while-continue|045 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -10694,9 +10654,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $4 i32.load offset=8 @@ -10711,29 +10671,29 @@ i32.load offset=4 local.set $2 loop $while-continue|048 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -10745,9 +10705,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 local.get $4 i32.load offset=8 @@ -10762,29 +10722,29 @@ i32.load offset=4 local.set $2 loop $while-continue|051 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -10796,9 +10756,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 local.get $4 i32.load offset=8 @@ -10813,29 +10773,29 @@ i32.load offset=4 local.set $2 loop $while-continue|054 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -10847,9 +10807,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 local.get $4 i32.load offset=8 @@ -10864,29 +10824,29 @@ i32.load offset=4 local.set $2 loop $while-continue|057 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -10898,9 +10858,9 @@ unreachable end i32.const 1 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $4 i32.load offset=8 @@ -10915,29 +10875,29 @@ i32.load offset=4 local.set $2 loop $while-continue|060 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -10949,9 +10909,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 local.get $4 i32.load offset=8 @@ -10966,29 +10926,29 @@ i32.load offset=4 local.set $2 loop $while-continue|063 - local.get $1 + local.get $0 local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|063 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11026,45 +10986,45 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7728 i32.store - local.get $0 + local.get $1 i32.const 7740 i32.load - local.tee $0 + local.tee $1 call $~lib/typedarray/Int16Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.extend16_s call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $2 i32.load offset=8 @@ -11080,30 +11040,30 @@ i32.load offset=4 local.set $3 loop $while-continue|0 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -11113,9 +11073,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 local.get $2 i32.load offset=8 @@ -11131,13 +11091,13 @@ i32.load offset=4 local.set $3 loop $while-continue|02 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -11145,17 +11105,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11167,9 +11127,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 local.get $2 i32.load offset=8 @@ -11185,13 +11145,13 @@ i32.load offset=4 local.set $3 loop $while-continue|05 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -11199,17 +11159,17 @@ i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11221,9 +11181,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 local.get $2 i32.load offset=8 @@ -11239,13 +11199,13 @@ i32.load offset=4 local.set $3 loop $while-continue|08 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -11253,17 +11213,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11275,9 +11235,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 local.get $2 i32.load offset=8 @@ -11294,13 +11254,13 @@ i32.load offset=4 local.set $3 loop $while-continue|011 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -11308,17 +11268,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11330,9 +11290,9 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 local.get $2 i32.load offset=8 @@ -11349,13 +11309,13 @@ i32.load offset=4 local.set $3 loop $while-continue|014 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -11363,17 +11323,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11385,9 +11345,9 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 local.get $2 i32.load offset=8 @@ -11404,13 +11364,13 @@ i32.load offset=4 local.set $3 loop $while-continue|017 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -11418,17 +11378,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11440,9 +11400,9 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 local.get $2 i32.load offset=8 @@ -11459,13 +11419,13 @@ i32.load offset=4 local.set $3 loop $while-continue|020 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -11473,17 +11433,17 @@ i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12177,9 +12137,9 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 local.get $4 i32.load offset=8 @@ -12195,13 +12155,13 @@ i32.load offset=4 local.set $2 loop $while-continue|042 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12209,17 +12169,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12231,9 +12191,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 local.get $4 i32.load offset=8 @@ -12249,13 +12209,13 @@ i32.load offset=4 local.set $2 loop $while-continue|045 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12263,17 +12223,17 @@ i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -12283,9 +12243,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 local.get $4 i32.load offset=8 @@ -12301,13 +12261,13 @@ i32.load offset=4 local.set $2 loop $while-continue|048 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12315,17 +12275,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -12337,9 +12297,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 local.get $4 i32.load offset=8 @@ -12355,13 +12315,13 @@ i32.load offset=4 local.set $2 loop $while-continue|051 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12369,17 +12329,17 @@ i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12391,9 +12351,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 local.get $4 i32.load offset=8 @@ -12409,13 +12369,13 @@ i32.load offset=4 local.set $2 loop $while-continue|054 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12423,17 +12383,17 @@ i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12445,9 +12405,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 local.get $4 i32.load offset=8 @@ -12463,13 +12423,13 @@ i32.load offset=4 local.set $2 loop $while-continue|057 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12477,17 +12437,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12499,9 +12459,9 @@ unreachable end i32.const 1 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 local.get $4 i32.load offset=8 @@ -12518,13 +12478,13 @@ i32.load offset=4 local.set $2 loop $while-continue|060 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12532,17 +12492,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -12554,9 +12514,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 local.get $4 i32.load offset=8 @@ -12573,13 +12533,13 @@ i32.load offset=4 local.set $2 loop $while-continue|063 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12587,17 +12547,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|063 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12635,46 +12595,46 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7728 i32.store - local.get $0 + local.get $1 i32.const 7740 i32.load - local.tee $0 + local.tee $1 call $~lib/typedarray/Uint16Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $2 i32.load offset=8 @@ -12690,30 +12650,30 @@ i32.load offset=4 local.set $3 loop $while-continue|0 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -12723,9 +12683,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 local.get $2 i32.load offset=8 @@ -12741,13 +12701,13 @@ i32.load offset=4 local.set $3 loop $while-continue|02 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12755,17 +12715,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12777,9 +12737,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 local.get $2 i32.load offset=8 @@ -12795,13 +12755,13 @@ i32.load offset=4 local.set $3 loop $while-continue|05 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12809,17 +12769,17 @@ i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12831,9 +12791,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 local.get $2 i32.load offset=8 @@ -12849,13 +12809,13 @@ i32.load offset=4 local.set $3 loop $while-continue|08 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12863,17 +12823,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -12885,9 +12845,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 local.get $2 i32.load offset=8 @@ -12904,13 +12864,13 @@ i32.load offset=4 local.set $3 loop $while-continue|011 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12918,17 +12878,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -12940,9 +12900,9 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 local.get $2 i32.load offset=8 @@ -12959,13 +12919,13 @@ i32.load offset=4 local.set $3 loop $while-continue|014 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -12973,17 +12933,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -12995,9 +12955,9 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 local.get $2 i32.load offset=8 @@ -13014,13 +12974,13 @@ i32.load offset=4 local.set $3 loop $while-continue|017 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -13028,17 +12988,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13050,9 +13010,9 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 local.get $2 i32.load offset=8 @@ -13069,13 +13029,13 @@ i32.load offset=4 local.set $3 loop $while-continue|020 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -13083,17 +13043,17 @@ i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13787,9 +13747,9 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 local.get $4 i32.load offset=8 @@ -13805,13 +13765,13 @@ i32.load offset=4 local.set $2 loop $while-continue|042 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -13819,17 +13779,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13841,9 +13801,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 local.get $4 i32.load offset=8 @@ -13859,13 +13819,13 @@ i32.load offset=4 local.set $2 loop $while-continue|045 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -13873,17 +13833,17 @@ i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -13893,9 +13853,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 local.get $4 i32.load offset=8 @@ -13911,13 +13871,13 @@ i32.load offset=4 local.set $2 loop $while-continue|048 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -13925,17 +13885,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -13947,9 +13907,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 local.get $4 i32.load offset=8 @@ -13965,13 +13925,13 @@ i32.load offset=4 local.set $2 loop $while-continue|051 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -13979,17 +13939,17 @@ i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -14001,9 +13961,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 local.get $4 i32.load offset=8 @@ -14019,13 +13979,13 @@ i32.load offset=4 local.set $2 loop $while-continue|054 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -14033,17 +13993,17 @@ i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -14055,9 +14015,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 local.get $4 i32.load offset=8 @@ -14073,13 +14033,13 @@ i32.load offset=4 local.set $2 loop $while-continue|057 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -14087,17 +14047,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -14109,9 +14069,9 @@ unreachable end i32.const 1 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 local.get $4 i32.load offset=8 @@ -14128,13 +14088,13 @@ i32.load offset=4 local.set $2 loop $while-continue|060 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -14142,17 +14102,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -14164,9 +14124,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 local.get $4 i32.load offset=8 @@ -14183,13 +14143,13 @@ i32.load offset=4 local.set $2 loop $while-continue|063 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl i32.add @@ -14197,17 +14157,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|063 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -14245,44 +14205,44 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7728 i32.store - local.get $0 + local.get $1 i32.const 7740 i32.load - local.tee $0 + local.tee $1 call $~lib/typedarray/Int32Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $2 i32.load offset=8 @@ -14298,30 +14258,30 @@ i32.load offset=4 local.set $3 loop $while-continue|0 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add i32.load i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -14331,9 +14291,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 local.get $2 i32.load offset=8 @@ -14349,13 +14309,13 @@ i32.load offset=4 local.set $3 loop $while-continue|02 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -14363,17 +14323,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -14385,9 +14345,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 local.get $2 i32.load offset=8 @@ -14403,13 +14363,13 @@ i32.load offset=4 local.set $3 loop $while-continue|05 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -14417,17 +14377,17 @@ i32.const -1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -14439,9 +14399,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 local.get $2 i32.load offset=8 @@ -14457,13 +14417,13 @@ i32.load offset=4 local.set $3 loop $while-continue|08 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -14471,17 +14431,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -14493,9 +14453,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 local.get $2 i32.load offset=8 @@ -14512,13 +14472,13 @@ i32.load offset=4 local.set $3 loop $while-continue|011 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -14526,17 +14486,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -14548,9 +14508,9 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 local.get $2 i32.load offset=8 @@ -14567,13 +14527,13 @@ i32.load offset=4 local.set $3 loop $while-continue|014 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -14581,17 +14541,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -14603,9 +14563,9 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 local.get $2 i32.load offset=8 @@ -14622,13 +14582,13 @@ i32.load offset=4 local.set $3 loop $while-continue|017 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -14636,17 +14596,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -14658,9 +14618,9 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 local.get $2 i32.load offset=8 @@ -14677,13 +14637,13 @@ i32.load offset=4 local.set $3 loop $while-continue|020 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -14691,17 +14651,17 @@ i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -15396,9 +15356,9 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 local.get $4 i32.load offset=8 @@ -15414,13 +15374,13 @@ i32.load offset=4 local.set $2 loop $while-continue|042 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -15428,17 +15388,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -15450,9 +15410,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 local.get $4 i32.load offset=8 @@ -15468,13 +15428,13 @@ i32.load offset=4 local.set $2 loop $while-continue|045 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -15482,17 +15442,17 @@ i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -15502,9 +15462,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 local.get $4 i32.load offset=8 @@ -15520,13 +15480,13 @@ i32.load offset=4 local.set $2 loop $while-continue|048 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -15534,17 +15494,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -15556,9 +15516,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 local.get $4 i32.load offset=8 @@ -15574,13 +15534,13 @@ i32.load offset=4 local.set $2 loop $while-continue|051 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -15588,17 +15548,17 @@ i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -15610,9 +15570,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 local.get $4 i32.load offset=8 @@ -15628,13 +15588,13 @@ i32.load offset=4 local.set $2 loop $while-continue|054 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -15642,17 +15602,17 @@ i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -15664,9 +15624,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 local.get $4 i32.load offset=8 @@ -15682,13 +15642,13 @@ i32.load offset=4 local.set $2 loop $while-continue|057 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -15696,17 +15656,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -15718,9 +15678,9 @@ unreachable end i32.const 1 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 local.get $4 i32.load offset=8 @@ -15737,13 +15697,13 @@ i32.load offset=4 local.set $2 loop $while-continue|060 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -15751,17 +15711,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -15773,9 +15733,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 local.get $4 i32.load offset=8 @@ -15792,13 +15752,13 @@ i32.load offset=4 local.set $2 loop $while-continue|063 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -15806,17 +15766,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|063 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -15854,44 +15814,44 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7728 i32.store - local.get $0 + local.get $1 i32.const 7740 i32.load - local.tee $0 + local.tee $1 call $~lib/typedarray/Uint32Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 local.get $2 i32.load offset=8 @@ -15907,30 +15867,30 @@ i32.load offset=4 local.set $3 loop $while-continue|0 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add i32.load i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -15940,9 +15900,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 local.get $2 i32.load offset=8 @@ -15958,13 +15918,13 @@ i32.load offset=4 local.set $3 loop $while-continue|02 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -15972,17 +15932,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -15994,9 +15954,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 local.get $2 i32.load offset=8 @@ -16012,13 +15972,13 @@ i32.load offset=4 local.set $3 loop $while-continue|05 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -16026,17 +15986,17 @@ i32.const -1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -16048,9 +16008,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 local.get $2 i32.load offset=8 @@ -16066,13 +16026,13 @@ i32.load offset=4 local.set $3 loop $while-continue|08 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -16080,17 +16040,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -16102,9 +16062,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 local.get $2 i32.load offset=8 @@ -16121,13 +16081,13 @@ i32.load offset=4 local.set $3 loop $while-continue|011 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -16135,17 +16095,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -16157,9 +16117,9 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 local.get $2 i32.load offset=8 @@ -16176,13 +16136,13 @@ i32.load offset=4 local.set $3 loop $while-continue|014 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -16190,17 +16150,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -16212,9 +16172,9 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 local.get $2 i32.load offset=8 @@ -16231,13 +16191,13 @@ i32.load offset=4 local.set $3 loop $while-continue|017 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -16245,17 +16205,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -16267,9 +16227,9 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 local.get $2 i32.load offset=8 @@ -16286,13 +16246,13 @@ i32.load offset=4 local.set $3 loop $while-continue|020 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $3 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -16300,17 +16260,17 @@ i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -17004,9 +16964,9 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 local.get $4 i32.load offset=8 @@ -17022,13 +16982,13 @@ i32.load offset=4 local.set $2 loop $while-continue|042 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -17036,17 +16996,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -17058,9 +17018,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 local.get $4 i32.load offset=8 @@ -17076,13 +17036,13 @@ i32.load offset=4 local.set $2 loop $while-continue|045 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -17090,17 +17050,17 @@ i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -17110,9 +17070,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 local.get $4 i32.load offset=8 @@ -17128,13 +17088,13 @@ i32.load offset=4 local.set $2 loop $while-continue|048 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -17142,17 +17102,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -17164,9 +17124,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 local.get $4 i32.load offset=8 @@ -17182,13 +17142,13 @@ i32.load offset=4 local.set $2 loop $while-continue|051 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -17196,17 +17156,17 @@ i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -17218,9 +17178,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 local.get $4 i32.load offset=8 @@ -17236,13 +17196,13 @@ i32.load offset=4 local.set $2 loop $while-continue|054 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -17250,17 +17210,17 @@ i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -17272,9 +17232,9 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 local.get $4 i32.load offset=8 @@ -17290,13 +17250,13 @@ i32.load offset=4 local.set $2 loop $while-continue|057 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -17304,17 +17264,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -17326,9 +17286,9 @@ unreachable end i32.const 1 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 local.get $4 i32.load offset=8 @@ -17345,13 +17305,13 @@ i32.load offset=4 local.set $2 loop $while-continue|060 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -17359,17 +17319,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -17381,9 +17341,9 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 local.get $4 i32.load offset=8 @@ -17400,13 +17360,13 @@ i32.load offset=4 local.set $2 loop $while-continue|063 - local.get $1 + local.get $0 local.get $3 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -17414,17 +17374,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|063 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -17931,7 +17891,7 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 local.get $2 i32.load offset=8 @@ -17947,23 +17907,23 @@ local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 local.get $2 i32.load offset=4 - local.set $1 + local.set $0 loop $while-continue|023 - local.get $0 + local.get $1 local.get $3 i32.lt_s if - local.get $1 local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -17971,17 +17931,17 @@ i64.const 1 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -17995,55 +17955,54 @@ i32.const 1 global.set $~argumentsLength local.get $2 - local.tee $1 + local.tee $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|00 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add i64.load i64.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -18051,9 +18010,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -18064,48 +18023,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|06 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -18113,7 +18071,7 @@ i64.const 11 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -18121,9 +18079,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const -1 i32.ne if @@ -18136,48 +18094,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|012 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -18185,7 +18142,7 @@ i64.const -1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -18193,9 +18150,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const -1 i32.ne if @@ -18208,48 +18165,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|018 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -18257,7 +18213,7 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -18265,9 +18221,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 3 i32.ne if @@ -18279,9 +18235,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -18296,17 +18252,17 @@ i32.const 4 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|024 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -18314,17 +18270,17 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|024 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -18336,9 +18292,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -18353,17 +18309,17 @@ i32.const 3 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|027 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -18371,17 +18327,17 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|027 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -18393,9 +18349,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -18410,17 +18366,17 @@ i32.const 2 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|030 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -18428,17 +18384,17 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|030 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -18450,9 +18406,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -18467,17 +18423,17 @@ i32.const 100 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|033 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -18485,17 +18441,17 @@ i64.const 1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|033 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -18507,9 +18463,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -18519,17 +18475,17 @@ local.get $2 i32.const 10 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|036 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -18537,17 +18493,17 @@ i64.const 1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -18559,9 +18515,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -18571,17 +18527,17 @@ local.get $2 i32.const 11 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|039 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -18589,17 +18545,17 @@ i64.const 1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -18611,7 +18567,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 9 call $~lib/typedarray/Int64Array#subarray local.tee $4 @@ -19544,7 +19500,7 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 local.get $2 i32.load offset=8 @@ -19560,23 +19516,23 @@ local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 local.get $2 i32.load offset=4 - local.set $1 + local.set $0 loop $while-continue|023 - local.get $0 + local.get $1 local.get $3 i32.lt_s if - local.get $1 local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -19584,17 +19540,17 @@ i64.const 1 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -19608,55 +19564,54 @@ i32.const 1 global.set $~argumentsLength local.get $2 - local.tee $1 + local.tee $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|00 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add i64.load i64.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -19664,9 +19619,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -19677,48 +19632,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|06 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -19726,7 +19680,7 @@ i64.const 11 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -19734,9 +19688,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const -1 i32.ne if @@ -19749,48 +19703,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|012 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -19798,7 +19751,7 @@ i64.const -1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -19806,9 +19759,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const -1 i32.ne if @@ -19821,48 +19774,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|018 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -19870,7 +19822,7 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -19878,9 +19830,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 3 i32.ne if @@ -19892,9 +19844,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -19909,17 +19861,17 @@ i32.const 4 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|024 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -19927,17 +19879,17 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|024 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -19949,9 +19901,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -19966,17 +19918,17 @@ i32.const 3 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|027 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -19984,17 +19936,17 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|027 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -20006,9 +19958,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -20023,17 +19975,17 @@ i32.const 2 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|030 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -20041,17 +19993,17 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|030 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -20063,9 +20015,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -20080,17 +20032,17 @@ i32.const 100 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|033 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -20098,17 +20050,17 @@ i64.const 1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|033 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -20120,9 +20072,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -20132,17 +20084,17 @@ local.get $2 i32.const 10 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|036 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -20150,17 +20102,17 @@ i64.const 1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -20172,9 +20124,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -20184,17 +20136,17 @@ local.get $2 i32.const 11 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|039 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -20202,17 +20154,17 @@ i64.const 1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -20224,7 +20176,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 9 call $~lib/typedarray/Uint64Array#subarray local.tee $4 @@ -21158,7 +21110,7 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 local.get $2 i32.load offset=8 @@ -21174,23 +21126,23 @@ local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 local.get $2 i32.load offset=4 - local.set $1 + local.set $0 loop $while-continue|023 - local.get $0 + local.get $1 local.get $3 i32.lt_s if - local.get $1 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -21198,17 +21150,17 @@ f32.const 1 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -21222,48 +21174,47 @@ i32.const 1 global.set $~argumentsLength local.get $2 - local.tee $1 + local.tee $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|00 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 2 i32.shl i32.add @@ -21271,7 +21222,7 @@ f32.const 0 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -21279,9 +21230,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -21292,48 +21243,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|06 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 2 i32.shl i32.add @@ -21341,7 +21291,7 @@ f32.const 11 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -21349,9 +21299,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const -1 i32.ne if @@ -21364,48 +21314,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|012 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 2 i32.shl i32.add @@ -21413,7 +21362,7 @@ f32.const -1 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -21421,9 +21370,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const -1 i32.ne if @@ -21436,48 +21385,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|018 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 2 i32.shl i32.add @@ -21485,7 +21433,7 @@ f32.const 3 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -21493,9 +21441,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 3 i32.ne if @@ -21507,9 +21455,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -21524,17 +21472,17 @@ i32.const 4 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|024 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -21542,17 +21490,17 @@ f32.const 3 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|024 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -21564,9 +21512,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -21581,17 +21529,17 @@ i32.const 3 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|027 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -21599,17 +21547,17 @@ f32.const 3 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|027 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -21621,9 +21569,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -21638,17 +21586,17 @@ i32.const 2 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|030 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -21656,17 +21604,17 @@ f32.const 3 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|030 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -21678,9 +21626,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -21695,17 +21643,17 @@ i32.const 100 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|033 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -21713,17 +21661,17 @@ f32.const 1 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|033 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -21735,9 +21683,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -21747,17 +21695,17 @@ local.get $2 i32.const 10 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|036 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -21765,17 +21713,17 @@ f32.const 1 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -21787,9 +21735,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -21799,17 +21747,17 @@ local.get $2 i32.const 11 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|039 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -21817,17 +21765,17 @@ f32.const 1 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -21839,7 +21787,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 9 call $~lib/typedarray/Float32Array#subarray local.tee $4 @@ -22773,7 +22721,7 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 local.get $2 i32.load offset=8 @@ -22789,23 +22737,23 @@ local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 local.get $2 i32.load offset=4 - local.set $1 + local.set $0 loop $while-continue|023 - local.get $0 + local.get $1 local.get $3 i32.lt_s if - local.get $1 local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -22813,17 +22761,17 @@ f64.const 1 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -22837,48 +22785,47 @@ i32.const 1 global.set $~argumentsLength local.get $2 - local.tee $1 + local.tee $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|00 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -22886,7 +22833,7 @@ f64.const 0 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -22894,9 +22841,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -22907,48 +22854,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|06 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -22956,7 +22902,7 @@ f64.const 11 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -22964,9 +22910,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const -1 i32.ne if @@ -22979,48 +22925,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|012 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -23028,7 +22973,7 @@ f64.const -1 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -23036,9 +22981,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const -1 i32.ne if @@ -23051,48 +22996,47 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $1 i32.const -1 - local.set $0 + local.set $2 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $2 + local.get $1 local.get $3 i32.add local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 - local.get $1 + local.get $0 i32.load offset=4 - local.set $3 + local.set $1 loop $while-continue|018 local.get $2 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 local.get $2 - local.tee $0 i32.const 3 i32.shl i32.add @@ -23100,7 +23044,7 @@ f64.const 3 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $0 + local.get $2 i32.const 1 i32.sub local.set $2 @@ -23108,9 +23052,9 @@ end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 3 i32.ne if @@ -23122,9 +23066,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -23139,17 +23083,17 @@ i32.const 4 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|024 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -23157,17 +23101,17 @@ f64.const 3 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|024 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -23179,9 +23123,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -23196,17 +23140,17 @@ i32.const 3 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|027 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -23214,17 +23158,17 @@ f64.const 3 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|027 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -23236,9 +23180,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -23253,17 +23197,17 @@ i32.const 2 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|030 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -23271,17 +23215,17 @@ f64.const 3 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|030 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -23293,9 +23237,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -23310,17 +23254,17 @@ i32.const 100 i32.le_s select - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|033 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -23328,17 +23272,17 @@ f64.const 1 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|033 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -23350,9 +23294,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -23362,17 +23306,17 @@ local.get $2 i32.const 10 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|036 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -23380,17 +23324,17 @@ f64.const 1 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -23402,9 +23346,9 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -23414,17 +23358,17 @@ local.get $2 i32.const 11 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=4 local.set $2 loop $while-continue|039 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -23432,17 +23376,17 @@ f64.const 1 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -23454,7 +23398,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 4 i32.const 9 call $~lib/typedarray/Float64Array#subarray @@ -23912,13 +23856,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -23947,13 +23891,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -23973,12 +23917,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -23988,12 +23932,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -24276,7 +24220,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -24290,18 +24234,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -24309,20 +24250,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -24335,33 +24276,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -25566,14 +25507,6 @@ i64.const 100000000 i64.ge_u if - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add local.get $1 local.get $1 i64.const 100000000 @@ -25585,8 +25518,20 @@ i32.wrap_i64 local.tee $3 i32.const 10000 + i32.div_u + local.set $4 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 10000 i32.rem_u - local.tee $4 + local.tee $3 i32.const 100 i32.div_u i32.const 2 @@ -25594,7 +25539,7 @@ i32.const 8012 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -25606,18 +25551,15 @@ i64.shl i64.or i64.store - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add - local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 + local.get $4 i32.const 100 i32.div_u i32.const 2 @@ -25625,7 +25567,7 @@ i32.const 8012 i32.add i64.load32_u - local.get $3 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -25802,345 +25744,6 @@ end local.get $0 ) - (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $0 - i32.const 1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $4 - i64.load - i64.extend32_s - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8000 - local.set $0 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $2 - i64.sub - local.get $2 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $1 - select - local.tee $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $4 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $4 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $2 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $2 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $2 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa64_dec_lut - end - local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $5 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $5 - i32.add - local.set $1 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - return - end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) @@ -26293,11 +25896,11 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -26317,260 +25920,260 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $3 - i32.eqz - if - block $__inlined_func$~lib/util/number/utoa64 (result i32) - local.get $4 - i64.load - local.set $2 + local.get $3 + i32.eqz + if + local.get $4 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 + local.get $2 + i64.eqz + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + i32.const 8000 + local.set $0 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $2 + i64.const 4294967295 + i64.le_u + if global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8000 - br $__inlined_func$~lib/util/number/utoa64 - end local.get $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $3 - local.tee $0 - i32.const 100000 + i32.wrap_i64 + local.tee $3 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 i32.lt_u if (result i32) local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end + i32.const 10 + i32.ge_u + i32.const 1 + i32.add else local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add end - local.tee $0 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - local.get $0 - call $~lib/util/number/utoa32_dec_lut else - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i64.const 1000000000000000 + i64.lt_u + if (result i32) local.get $2 - i64.const 1000000000000000 + i64.const 1000000000000 i64.lt_u if (result i32) local.get $2 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $2 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.ge_u - i32.add - end + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $2 + i64.const 10000000000 + i64.ge_u + i32.add else local.get $2 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $2 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.add end - local.tee $0 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 + else local.get $2 - local.get $0 - call $~lib/util/number/utoa64_dec_lut + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $2 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $2 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 local.get $1 + call $~lib/util/number/utoa64_dec_lut end - local.set $0 - br $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 20 - i32.add - i32.mul - i32.const 20 + i32.const 4 i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - loop $for-loop|0 - local.get $3 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 20 + i32.add + i32.mul + i32.const 20 + i32.add + local.tee $7 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $4 local.get $6 - i32.gt_s + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $5 if local.get $0 local.get $1 i32.const 1 i32.shl i32.add - local.get $4 - local.get $6 - i32.const 3 + i32.const 9584 + local.get $5 + i32.const 1 i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered + call $~lib/memory/memory.copy local.get $1 - i32.add - local.set $1 local.get $5 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $5 - i32.add - local.set $1 - end - local.get $6 - i32.const 1 i32.add - local.set $6 - br $for-loop|0 + local.set $1 end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 end - local.get $7 + end + local.get $7 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -26592,87 +26195,89 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) (local $7 i64) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) (local $12 i64) - local.get $3 + (local $13 i64) + local.get $2 local.get $1 i64.sub - local.set $9 - local.get $3 + local.set $10 + local.get $2 i64.const 1 i32.const 0 - local.get $4 + local.get $3 i32.sub - local.tee $10 + local.tee $11 i64.extend_i32_s local.tee $1 i64.shl - local.tee $11 + local.tee $12 i64.const 1 i64.sub - local.tee $12 + local.tee $13 i64.and local.set $7 - local.get $3 + local.get $2 local.get $1 i64.shr_u i32.wrap_i64 - local.tee $2 - local.set $4 - local.get $2 + local.tee $6 + local.set $3 + local.get $6 i32.const 100000 i32.lt_u if (result i32) - local.get $4 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $4 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $4 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $4 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $4 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $4 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $4 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.set $8 + local.set $9 loop $while-continue|0 - local.get $8 + local.get $9 i32.const 0 i32.gt_s if @@ -26688,243 +26293,249 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + local.get $9 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $2 + local.get $6 i32.const 1000000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 100000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 100000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 10000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 10000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 1000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 1000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 100000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 100000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 10000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 10000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 1000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 1000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 100 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 100 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 10 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 10 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 - local.set $4 + local.get $6 + local.set $3 i32.const 0 - local.set $2 + local.set $6 br $break|1 end i32.const 0 - local.set $4 + local.set $3 end - local.get $4 - local.get $6 + local.get $3 + local.get $5 i32.or if + local.get $5 + local.tee $8 + i32.const 1 + i32.add + local.set $5 local.get $0 - local.get $6 + local.get $8 i32.const 1 i32.shl i32.add - local.get $4 + local.get $3 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 end - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 + local.set $9 local.get $7 - local.get $2 + local.get $6 i64.extend_i32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl i64.add local.tee $1 - local.get $5 + local.get $4 i64.le_u if - local.get $8 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $9 i32.const 2 i32.shl i32.const 10736 i32.add i64.load32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl - local.set $3 + local.set $2 local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $6 i32.load16_u - local.set $4 + local.set $3 loop $while-continue|3 - local.get $3 - local.get $5 + local.get $2 + local.get $4 local.get $1 i64.sub i64.le_u i32.const 0 local.get $1 - local.get $9 + local.get $10 i64.lt_u select if (result i32) i32.const 1 - local.get $9 + local.get $10 local.get $1 i64.sub local.get $1 - local.get $3 + local.get $2 i64.add local.tee $7 - local.get $9 + local.get $10 i64.sub i64.gt_u local.get $7 - local.get $9 + local.get $10 i64.lt_u select else i32.const 0 end if - local.get $4 + local.get $3 i32.const 1 i32.sub - local.set $4 + local.set $3 local.get $1 - local.get $3 + local.get $2 i64.add local.set $1 br $while-continue|3 end end - local.get $2 - local.get $4 - i32.store16 local.get $6 + local.get $3 + i32.store16 + local.get $5 return end br $while-continue|0 end end - local.get $10 + local.get $11 i64.extend_i32_s local.set $1 loop $while-continue|4 - local.get $5 + local.get $4 i64.const 10 i64.mul - local.set $5 + local.set $4 local.get $7 i64.const 10 i64.mul - local.tee $3 + local.tee $2 local.get $1 i64.shr_u local.tee $7 - local.get $6 + local.get $5 i64.extend_i32_s i64.or i64.const 0 i64.ne if + local.get $5 + local.tee $3 + i32.const 1 + i32.add + local.set $5 local.get $0 - local.get $6 + local.get $3 i32.const 1 i32.shl i32.add @@ -26935,32 +26546,28 @@ i32.const 48 i32.add i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 end - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 - local.get $5 - local.get $3 - local.get $12 + local.set $9 + local.get $4 + local.get $2 + local.get $13 i64.and local.tee $7 i64.le_u br_if $while-continue|4 end - local.get $8 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $7 local.set $1 - local.get $9 + local.get $10 i32.const 0 - local.get $8 + local.get $9 i32.sub i32.const 2 i32.shl @@ -26968,41 +26575,41 @@ i32.add i64.load32_u i64.mul - local.set $3 + local.set $2 local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $6 i32.load16_u - local.set $4 + local.set $3 loop $while-continue|6 - local.get $11 - local.get $5 + local.get $12 + local.get $4 local.get $1 i64.sub i64.le_u i32.const 0 local.get $1 - local.get $3 + local.get $2 i64.lt_u select if (result i32) i32.const 1 - local.get $3 + local.get $2 local.get $1 i64.sub local.get $1 - local.get $11 + local.get $12 i64.add local.tee $7 - local.get $3 + local.get $2 i64.sub i64.gt_u - local.get $3 + local.get $2 local.get $7 i64.gt_u select @@ -27010,21 +26617,21 @@ i32.const 0 end if - local.get $4 + local.get $3 i32.const 1 i32.sub - local.set $4 + local.set $3 local.get $1 - local.get $11 + local.get $12 i64.add local.set $1 br $while-continue|6 end end - local.get $2 - local.get $4 - i32.store16 local.get $6 + local.get $3 + i32.store16 + local.get $5 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -27369,18 +26976,20 @@ (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) - (local $4 i64) + (local $4 i32) (local $5 i32) (local $6 i64) (local $7 i64) - (local $8 i32) + (local $8 i64) (local $9 i32) (local $10 i32) - (local $11 i32) + (local $11 i64) + (local $12 i64) + (local $13 i64) local.get $1 f64.const 0 f64.lt - local.tee $10 + local.tee $9 if (result f64) local.get $0 i32.const 45 @@ -27397,66 +27006,68 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $9 + local.set $5 + local.get $2 + i64.const 4503599627370495 + i64.and + local.get $5 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and i64.add - local.tee $3 + local.set $2 + local.get $5 + i32.const 1 + local.get $5 + select + i32.const 1075 + i32.sub + local.tee $5 + i32.const 1 + i32.sub + local.get $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $2 - local.get $2 + local.tee $3 i64.clz i32.wrap_i64 - local.tee $8 + local.tee $4 + i32.sub + local.set $10 + local.get $3 + local.get $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $9 - i32.const 1 - local.get $9 - select - i32.const 1075 - i32.sub - local.tee $9 - i32.const 1 - i32.sub - local.get $8 - i32.sub - local.set $8 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq + local.get $2 + local.get $2 + i64.const 4503599627370496 + i64.eq i32.const 1 i32.add - local.tee $5 + local.tee $4 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 local.get $5 + local.get $4 i32.sub - local.get $8 + local.get $10 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $8 + local.get $10 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $8 + local.tee $5 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -27465,9 +27076,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $5 + local.tee $4 local.get $1 - local.get $5 + local.get $4 f64.convert_i32_s f64.ne i32.add @@ -27475,59 +27086,84 @@ i32.shr_s i32.const 1 i32.add - local.tee $5 + local.tee $4 i32.const 3 i32.shl - local.tee $11 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $11 + local.get $10 i32.const 9864 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $5 + local.get $4 i32.const 1 i32.shl i32.const 10560 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow + local.get $2 + local.get $2 + i64.clz + i64.shl + local.tee $3 + i64.const 4294967295 + i64.and + local.set $12 global.get $~lib/util/number/_frc_pow - local.tee $6 + local.tee $11 i64.const 4294967295 i64.and local.set $2 - local.get $6 + local.get $3 i64.const 32 i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $4 + local.set $13 + local.get $11 i64.const 32 i64.shr_u - local.tee $7 - i64.mul + local.set $3 local.get $2 - local.get $7 + local.get $13 i64.mul local.get $2 - local.get $4 - i64.const 4294967295 - i64.and - local.tee $4 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.set $11 + global.get $~lib/util/number/_frc_plus + local.tee $6 + i64.const 4294967295 + i64.and + local.set $7 + local.get $2 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + i64.mul + local.get $2 + local.get $7 + i64.mul i64.const 32 i64.shr_u i64.add - local.get $4 + local.set $8 + local.get $3 local.get $6 i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $3 local.get $7 + i64.mul + local.get $8 i64.const 4294967295 i64.and i64.add @@ -27538,46 +27174,42 @@ i64.add i64.const 1 i64.sub - local.set $4 - local.get $0 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u + local.set $6 + global.get $~lib/util/number/_frc_minus local.tee $7 - i64.mul + i64.const 4294967295 + i64.and + local.set $8 local.get $2 local.get $7 + i64.const 32 + i64.shr_u + local.tee $7 i64.mul local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 + local.get $8 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.set $2 + local.get $9 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 + local.get $3 + local.get $13 + i64.mul + local.get $11 i64.const 32 i64.shr_u i64.add local.get $3 - local.get $6 + local.get $12 i64.mul - local.get $7 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -27586,48 +27218,24 @@ i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $5 - local.get $9 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $4 + local.get $6 local.get $5 - local.get $8 + global.get $~lib/util/number/_exp_pow i32.add i32.const -64 i32.sub - local.get $4 local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $4 - i64.mul - local.get $2 - local.get $4 - i64.mul - local.get $2 local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 + local.get $7 i64.mul + local.get $2 i64.const 32 i64.shr_u i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul local.get $3 + local.get $8 + i64.mul + local.get $2 i64.const 4294967295 i64.and i64.add @@ -27639,13 +27247,13 @@ i64.const 1 i64.add i64.sub - local.get $10 + local.get $9 call $~lib/util/number/genDigits - local.get $10 + local.get $9 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $10 + local.get $9 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -28157,11 +27765,11 @@ (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load offset=8 i32.const 11020 i32.load - i32.lt_s + local.get $0 + i32.load offset=8 + i32.gt_s if i32.const 1360 i32.const 1632 @@ -28259,11 +27867,11 @@ end ) (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=8 local.get $1 i32.load offset=8 - i32.lt_s + local.get $0 + i32.load offset=8 + i32.gt_s if i32.const 1360 i32.const 1632 @@ -28364,8 +27972,8 @@ ) (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i32) + (local $4 i32) + (local $5 i64) local.get $2 i32.const 0 i32.lt_s @@ -28379,11 +27987,11 @@ end local.get $0 i32.load offset=8 - local.get $2 local.get $1 i32.load offset=8 i32.const 3 i32.shr_u + local.get $2 i32.add i32.lt_s if @@ -28394,14 +28002,14 @@ call $~lib/builtins/abort unreachable end + local.get $2 local.get $0 i32.load offset=4 - local.get $2 i32.add - local.set $0 + local.set $2 local.get $1 i32.load offset=4 - local.set $2 + local.set $4 local.get $1 i32.load offset=8 i32.const 3 @@ -28412,26 +28020,26 @@ local.get $3 i32.gt_s if - local.get $0 + local.get $2 local.get $3 i32.add - local.get $2 local.get $3 i32.const 3 i32.shl + local.get $4 i32.add i64.load - local.tee $4 - i32.wrap_i64 local.tee $5 + i32.wrap_i64 + local.tee $0 i32.const 31 i32.shr_s i32.const -1 i32.xor i64.extend_i32_s - local.get $4 - i32.const 255 local.get $5 + i32.const 255 + local.get $0 i32.sub i32.const 31 i32.shr_s @@ -28463,11 +28071,11 @@ end local.get $0 i32.load offset=8 - local.get $2 local.get $1 i32.load offset=8 i32.const 1 i32.shr_u + local.get $2 i32.add i32.lt_s if @@ -28478,9 +28086,9 @@ call $~lib/builtins/abort unreachable end + local.get $2 local.get $0 i32.load offset=4 - local.get $2 i32.add local.set $2 local.get $1 @@ -28499,24 +28107,24 @@ local.get $2 local.get $3 i32.add - local.get $4 local.get $3 i32.const 1 i32.shl + local.get $4 i32.add i32.load16_s local.tee $0 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $0 i32.const 255 local.get $0 i32.sub i32.const 31 i32.shr_s i32.or + local.get $0 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor i32.and i32.store8 local.get $3 @@ -28787,9 +28395,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 i32.load offset=12 + local.get $2 i32.add local.get $0 i32.load offset=8 @@ -29294,25 +28902,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.tee $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $7 loop $for-loop|0 @@ -29323,13 +28930,13 @@ local.get $0 local.get $7 i32.add - local.tee $5 - i32.load8_s - local.set $3 - local.get $5 + local.tee $3 i32.load8_s offset=1 local.tee $6 local.set $5 + local.get $3 + i32.load8_s + local.set $3 i32.const 2 global.set $~argumentsLength local.get $3 @@ -29507,20 +29114,20 @@ i32.add local.tee $3 i32.load8_s - local.set $5 + local.set $6 local.get $3 local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $5 i32.load8_s i32.store8 local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 local.get $5 + local.get $6 i32.store8 local.get $2 i32.const 1 @@ -29588,10 +29195,9 @@ i32.const 1 i32.sub local.tee $2 - local.tee $8 i32.add local.get $0 - local.get $8 + local.get $2 i32.add i32.load8_s i32.store8 @@ -29603,10 +29209,10 @@ local.get $6 i32.gt_s if - local.get $4 local.get $7 local.get $6 i32.sub + local.get $4 i32.add local.get $0 local.get $6 @@ -29629,16 +29235,16 @@ local.get $6 i32.add i32.load8_s - local.set $7 + local.set $8 local.get $2 local.get $4 i32.add i32.load8_s - local.set $8 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -29648,7 +29254,7 @@ local.get $0 local.get $1 i32.add - local.get $7 + local.get $8 i32.store8 local.get $6 i32.const 1 @@ -29658,7 +29264,7 @@ local.get $0 local.get $1 i32.add - local.get $8 + local.get $7 i32.store8 local.get $2 i32.const 1 @@ -29683,8 +29289,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -29698,10 +29304,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -29709,7 +29316,7 @@ end local.get $0 i32.load8_s - local.set $1 + local.set $3 local.get $0 i32.load8_s offset=1 local.set $4 @@ -29717,50 +29324,50 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $5 + local.tee $1 select i32.store8 + local.get $3 + local.get $4 + local.get $1 + select + local.set $3 local.get $0 i32.load8_s offset=2 - local.set $3 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 - local.get $5 - select - local.tee $1 local.get $3 + local.get $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 + local.tee $1 select i32.store8 offset=1 local.get $0 - local.get $1 local.get $3 local.get $4 + local.get $1 select i32.store8 offset=2 end local.get $0 i32.load8_s - local.set $1 + local.set $3 local.get $0 i32.load8_s offset=1 local.set $4 @@ -29768,28 +29375,28 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store8 local.get $0 - local.get $1 + local.get $3 local.get $4 - local.get $2 + local.get $1 select i32.store8 offset=1 return end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -29807,21 +29414,11 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 + call $~lib/rt/tlsf/__alloc + local.tee $10 local.get $5 i32.add - local.set $10 + local.set $11 i32.const 0 local.set $5 loop $for-loop|1 @@ -29829,10 +29426,10 @@ local.get $6 i32.lt_u if - local.get $9 local.get $5 i32.const 2 i32.shl + local.get $10 i32.add i32.const -1 i32.store @@ -29843,56 +29440,48 @@ br $for-loop|1 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 + call $~lib/rt/tlsf/__alloc + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -29900,23 +29489,23 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $8 + local.get $9 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select local.tee $5 - local.get $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -29926,11 +29515,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -29940,31 +29529,33 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $9 - local.get $4 + local.get $8 i32.const 2 i32.shl + local.get $10 i32.add i32.load - local.tee $13 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 local.get $4 + local.get $11 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -29972,27 +29563,27 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $4 local.set $3 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -30000,15 +29591,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store local.get $6 local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -30016,10 +29607,10 @@ loop $for-loop|4 local.get $4 if - local.get $9 local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load local.tee $1 @@ -30028,16 +29619,16 @@ if local.get $0 local.get $1 - local.get $10 local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -30048,9 +29639,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -30078,25 +29669,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.tee $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $7 loop $for-loop|0 @@ -30107,13 +29697,13 @@ local.get $0 local.get $7 i32.add - local.tee $5 - i32.load8_u - local.set $3 - local.get $5 + local.tee $3 i32.load8_u offset=1 local.tee $6 local.set $5 + local.get $3 + i32.load8_u + local.set $3 i32.const 2 global.set $~argumentsLength local.get $3 @@ -30291,20 +29881,20 @@ i32.add local.tee $3 i32.load8_u - local.set $5 + local.set $6 local.get $3 local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $5 i32.load8_u i32.store8 local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 local.get $5 + local.get $6 i32.store8 local.get $2 i32.const 1 @@ -30372,10 +29962,9 @@ i32.const 1 i32.sub local.tee $2 - local.tee $8 i32.add local.get $0 - local.get $8 + local.get $2 i32.add i32.load8_u i32.store8 @@ -30387,10 +29976,10 @@ local.get $6 i32.gt_s if - local.get $4 local.get $7 local.get $6 i32.sub + local.get $4 i32.add local.get $0 local.get $6 @@ -30413,16 +30002,16 @@ local.get $6 i32.add i32.load8_u - local.set $7 + local.set $8 local.get $2 local.get $4 i32.add i32.load8_u - local.set $8 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -30432,7 +30021,7 @@ local.get $0 local.get $1 i32.add - local.get $7 + local.get $8 i32.store8 local.get $6 i32.const 1 @@ -30442,7 +30031,7 @@ local.get $0 local.get $1 i32.add - local.get $8 + local.get $7 i32.store8 local.get $2 i32.const 1 @@ -30467,8 +30056,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -30482,10 +30071,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -30493,7 +30083,7 @@ end local.get $0 i32.load8_u - local.set $1 + local.set $3 local.get $0 i32.load8_u offset=1 local.set $4 @@ -30501,50 +30091,50 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $5 + local.tee $1 select i32.store8 + local.get $3 + local.get $4 + local.get $1 + select + local.set $3 local.get $0 i32.load8_u offset=2 - local.set $3 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 - local.get $5 - select - local.tee $1 local.get $3 + local.get $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 + local.tee $1 select i32.store8 offset=1 local.get $0 - local.get $1 local.get $3 local.get $4 + local.get $1 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $1 + local.set $3 local.get $0 i32.load8_u offset=1 local.set $4 @@ -30552,28 +30142,28 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store8 local.get $0 - local.get $1 + local.get $3 local.get $4 - local.get $2 + local.get $1 select i32.store8 offset=1 return end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -30591,21 +30181,11 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 + call $~lib/rt/tlsf/__alloc + local.tee $10 local.get $5 i32.add - local.set $10 + local.set $11 i32.const 0 local.set $5 loop $for-loop|1 @@ -30613,10 +30193,10 @@ local.get $6 i32.lt_u if - local.get $9 local.get $5 i32.const 2 i32.shl + local.get $10 i32.add i32.const -1 i32.store @@ -30627,56 +30207,48 @@ br $for-loop|1 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 + call $~lib/rt/tlsf/__alloc + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -30684,23 +30256,23 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $8 + local.get $9 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select local.tee $5 - local.get $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -30710,11 +30282,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -30724,31 +30296,33 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $9 - local.get $4 + local.get $8 i32.const 2 i32.shl + local.get $10 i32.add i32.load - local.tee $13 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 local.get $4 + local.get $11 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -30756,27 +30330,27 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $4 local.set $3 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -30784,15 +30358,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store local.get $6 local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -30800,10 +30374,10 @@ loop $for-loop|4 local.get $4 if - local.get $9 local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load local.tee $1 @@ -30812,16 +30386,16 @@ if local.get $0 local.get $1 - local.get $10 local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -30832,9 +30406,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -30872,25 +30446,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.tee $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $7 loop $for-loop|0 @@ -30903,13 +30476,13 @@ i32.const 1 i32.shl i32.add - local.tee $5 - i32.load16_s - local.set $3 - local.get $5 + local.tee $3 i32.load16_s offset=2 local.tee $6 local.set $5 + local.get $3 + i32.load16_s + local.set $3 i32.const 2 global.set $~argumentsLength local.get $3 @@ -30935,10 +30508,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_s local.set $8 @@ -30952,10 +30525,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add local.get $8 i32.store16 offset=4 @@ -30967,10 +30540,10 @@ end end end - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.store16 offset=4 @@ -30980,10 +30553,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_s local.set $3 @@ -30997,10 +30570,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.store16 offset=2 @@ -31012,10 +30585,10 @@ end end end - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add local.get $5 i32.store16 offset=2 @@ -31038,19 +30611,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_s - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_s i32.const 2 @@ -31107,22 +30680,22 @@ i32.add local.tee $3 i32.load16_s - local.set $5 + local.set $6 local.get $3 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load16_s i32.store16 local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 local.get $5 + local.get $6 i32.store16 local.get $2 i32.const 1 @@ -31209,17 +30782,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $7 local.get $6 i32.sub i32.const 1 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_s offset=2 i32.store16 @@ -31235,48 +30808,48 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 1 i32.shl + local.get $4 i32.add i32.load16_s - local.set $7 - local.get $4 + local.set $8 local.get $2 i32.const 1 i32.shl + local.get $4 i32.add i32.load16_s - local.set $8 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add - local.get $7 + local.get $8 i32.store16 local.get $6 i32.const 1 i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add - local.get $8 + local.get $7 i32.store16 local.get $2 i32.const 1 @@ -31301,8 +30874,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -31316,10 +30889,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -31327,7 +30901,7 @@ end local.get $0 i32.load16_s - local.set $1 + local.set $3 local.get $0 i32.load16_s offset=2 local.set $4 @@ -31335,50 +30909,50 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $5 + local.tee $1 select i32.store16 + local.get $3 + local.get $4 + local.get $1 + select + local.set $3 local.get $0 i32.load16_s offset=4 - local.set $3 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 - local.get $5 - select - local.tee $1 local.get $3 + local.get $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 + local.tee $1 select i32.store16 offset=2 local.get $0 - local.get $1 local.get $3 local.get $4 + local.get $1 select i32.store16 offset=4 end local.get $0 i32.load16_s - local.set $1 + local.set $3 local.get $0 i32.load16_s offset=2 local.set $4 @@ -31386,28 +30960,28 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store16 local.get $0 - local.get $1 + local.get $3 local.get $4 - local.get $2 + local.get $1 select i32.store16 offset=2 return end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -31425,21 +30999,11 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 + call $~lib/rt/tlsf/__alloc + local.tee $10 local.get $5 i32.add - local.set $10 + local.set $11 i32.const 0 local.set $5 loop $for-loop|1 @@ -31447,10 +31011,10 @@ local.get $6 i32.lt_u if - local.get $9 local.get $5 i32.const 2 i32.shl + local.get $10 i32.add i32.const -1 i32.store @@ -31464,57 +31028,47 @@ local.get $1 i32.const 1 i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 + call $~lib/rt/tlsf/__alloc + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -31522,23 +31076,23 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $8 + local.get $9 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select local.tee $5 - local.get $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -31548,11 +31102,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -31562,31 +31116,33 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $9 - local.get $4 + local.get $8 i32.const 2 i32.shl + local.get $10 i32.add i32.load - local.tee $13 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 local.get $4 + local.get $11 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -31594,27 +31150,27 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $4 local.set $3 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -31622,15 +31178,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store local.get $6 local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -31638,10 +31194,10 @@ loop $for-loop|4 local.get $4 if - local.get $9 local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load local.tee $1 @@ -31650,16 +31206,16 @@ if local.get $0 local.get $1 - local.get $10 local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -31670,9 +31226,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -31700,25 +31256,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.tee $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $7 loop $for-loop|0 @@ -31731,13 +31286,13 @@ i32.const 1 i32.shl i32.add - local.tee $5 - i32.load16_u - local.set $3 - local.get $5 + local.tee $3 i32.load16_u offset=2 local.tee $6 local.set $5 + local.get $3 + i32.load16_u + local.set $3 i32.const 2 global.set $~argumentsLength local.get $3 @@ -31763,10 +31318,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_u local.set $8 @@ -31780,10 +31335,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add local.get $8 i32.store16 offset=4 @@ -31795,10 +31350,10 @@ end end end - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.store16 offset=4 @@ -31808,10 +31363,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_u local.set $3 @@ -31825,10 +31380,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.store16 offset=2 @@ -31840,10 +31395,10 @@ end end end - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add local.get $5 i32.store16 offset=2 @@ -31866,19 +31421,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_u - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_u i32.const 2 @@ -31935,22 +31490,22 @@ i32.add local.tee $3 i32.load16_u - local.set $5 + local.set $6 local.get $3 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load16_u i32.store16 local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 local.get $5 + local.get $6 i32.store16 local.get $2 i32.const 1 @@ -32037,17 +31592,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $7 local.get $6 i32.sub i32.const 1 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_u offset=2 i32.store16 @@ -32063,48 +31618,48 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 1 i32.shl + local.get $4 i32.add i32.load16_u - local.set $7 - local.get $4 + local.set $8 local.get $2 i32.const 1 i32.shl + local.get $4 i32.add i32.load16_u - local.set $8 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add - local.get $7 + local.get $8 i32.store16 local.get $6 i32.const 1 i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add - local.get $8 + local.get $7 i32.store16 local.get $2 i32.const 1 @@ -32129,8 +31684,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -32144,10 +31699,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -32155,7 +31711,7 @@ end local.get $0 i32.load16_u - local.set $1 + local.set $3 local.get $0 i32.load16_u offset=2 local.set $4 @@ -32163,50 +31719,50 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $5 + local.tee $1 select i32.store16 + local.get $3 + local.get $4 + local.get $1 + select + local.set $3 local.get $0 i32.load16_u offset=4 - local.set $3 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 - local.get $5 - select - local.tee $1 local.get $3 + local.get $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 + local.tee $1 select i32.store16 offset=2 local.get $0 - local.get $1 local.get $3 local.get $4 + local.get $1 select i32.store16 offset=4 end local.get $0 i32.load16_u - local.set $1 + local.set $3 local.get $0 i32.load16_u offset=2 local.set $4 @@ -32214,28 +31770,28 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store16 local.get $0 - local.get $1 + local.get $3 local.get $4 - local.get $2 + local.get $1 select i32.store16 offset=2 return end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -32253,21 +31809,11 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 + call $~lib/rt/tlsf/__alloc + local.tee $10 local.get $5 i32.add - local.set $10 + local.set $11 i32.const 0 local.set $5 loop $for-loop|1 @@ -32275,10 +31821,10 @@ local.get $6 i32.lt_u if - local.get $9 local.get $5 i32.const 2 i32.shl + local.get $10 i32.add i32.const -1 i32.store @@ -32292,57 +31838,47 @@ local.get $1 i32.const 1 i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 + call $~lib/rt/tlsf/__alloc + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -32350,23 +31886,23 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $8 + local.get $9 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select local.tee $5 - local.get $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -32376,11 +31912,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -32390,31 +31926,33 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $9 - local.get $4 + local.get $8 i32.const 2 i32.shl + local.get $10 i32.add i32.load - local.tee $13 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 local.get $4 + local.get $11 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -32422,27 +31960,27 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $4 local.set $3 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -32450,15 +31988,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store local.get $6 local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -32466,10 +32004,10 @@ loop $for-loop|4 local.get $4 if - local.get $9 local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load local.tee $1 @@ -32478,16 +32016,16 @@ if local.get $0 local.get $1 - local.get $10 local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -32498,9 +32036,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -32538,25 +32076,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.tee $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $7 loop $for-loop|0 @@ -32569,13 +32106,13 @@ i32.const 2 i32.shl i32.add - local.tee $5 - i32.load - local.set $3 - local.get $5 + local.tee $3 i32.load offset=4 local.tee $6 local.set $5 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength local.get $3 @@ -32601,10 +32138,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load local.set $8 @@ -32618,10 +32155,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $8 i32.store offset=8 @@ -32633,10 +32170,10 @@ end end end - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $3 i32.store offset=8 @@ -32646,10 +32183,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load local.set $3 @@ -32663,10 +32200,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $3 i32.store offset=4 @@ -32678,10 +32215,10 @@ end end end - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $5 i32.store offset=4 @@ -32704,19 +32241,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 2 i32.shl + local.get $0 i32.add i32.load i32.const 2 @@ -32773,22 +32310,22 @@ i32.add local.tee $3 i32.load - local.set $5 + local.set $6 local.get $3 local.get $0 local.get $2 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 local.get $5 + local.get $6 i32.store local.get $2 i32.const 1 @@ -32875,17 +32412,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $7 local.get $6 i32.sub i32.const 2 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.store @@ -32901,48 +32438,48 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $7 - local.get $4 + local.set $8 local.get $2 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $8 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $6 i32.const 1 i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $2 i32.const 1 @@ -32967,8 +32504,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -32982,10 +32519,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -32993,7 +32531,7 @@ end local.get $0 i32.load - local.set $1 + local.set $3 local.get $0 i32.load offset=4 local.set $4 @@ -33001,50 +32539,50 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $5 + local.tee $1 select i32.store + local.get $3 + local.get $4 + local.get $1 + select + local.set $3 local.get $0 i32.load offset=8 - local.set $3 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 - local.get $5 - select - local.tee $1 local.get $3 + local.get $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 + local.tee $1 select i32.store offset=4 local.get $0 - local.get $1 local.get $3 local.get $4 + local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $1 + local.set $3 local.get $0 i32.load offset=4 local.set $4 @@ -33052,28 +32590,28 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $3 local.get $4 - local.get $2 + local.get $1 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -33091,21 +32629,11 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 + call $~lib/rt/tlsf/__alloc + local.tee $10 local.get $5 i32.add - local.set $10 + local.set $11 i32.const 0 local.set $5 loop $for-loop|1 @@ -33113,10 +32641,10 @@ local.get $6 i32.lt_u if - local.get $9 local.get $5 i32.const 2 i32.shl + local.get $10 i32.add i32.const -1 i32.store @@ -33130,57 +32658,47 @@ local.get $1 i32.const 2 i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 + call $~lib/rt/tlsf/__alloc + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -33188,23 +32706,23 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $8 + local.get $9 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select local.tee $5 - local.get $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -33214,11 +32732,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -33228,31 +32746,33 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $9 - local.get $4 + local.get $8 i32.const 2 i32.shl + local.get $10 i32.add i32.load - local.tee $13 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 local.get $4 + local.get $11 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -33260,27 +32780,27 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $4 local.set $3 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -33288,15 +32808,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store local.get $6 local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -33304,10 +32824,10 @@ loop $for-loop|4 local.get $4 if - local.get $9 local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load local.tee $1 @@ -33316,16 +32836,16 @@ if local.get $0 local.get $1 - local.get $10 local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -33336,9 +32856,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -33360,25 +32880,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 + local.tee $6 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $6 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $7 loop $for-loop|0 @@ -33391,13 +32910,13 @@ i32.const 2 i32.shl i32.add - local.tee $5 - i32.load - local.set $3 - local.get $5 + local.tee $3 i32.load offset=4 local.tee $6 local.set $5 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength local.get $3 @@ -33423,10 +32942,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load local.set $8 @@ -33440,10 +32959,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $8 i32.store offset=8 @@ -33455,10 +32974,10 @@ end end end - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $3 i32.store offset=8 @@ -33468,10 +32987,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load local.set $3 @@ -33485,10 +33004,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $3 i32.store offset=4 @@ -33500,10 +33019,10 @@ end end end - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add local.get $5 i32.store offset=4 @@ -33526,19 +33045,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 2 i32.shl + local.get $0 i32.add i32.load i32.const 2 @@ -33595,22 +33114,22 @@ i32.add local.tee $3 i32.load - local.set $5 + local.set $6 local.get $3 local.get $0 local.get $2 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 local.get $5 + local.get $6 i32.store local.get $2 i32.const 1 @@ -33697,17 +33216,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $7 local.get $6 i32.sub i32.const 2 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.store @@ -33723,48 +33242,48 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $7 - local.get $4 + local.set $8 local.get $2 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $8 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $6 i32.const 1 i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $2 i32.const 1 @@ -33789,8 +33308,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) + (local $12 i32) + (local $13 i64) local.get $1 i32.const 48 i32.le_s @@ -33804,10 +33323,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -33815,7 +33335,7 @@ end local.get $0 i32.load - local.set $1 + local.set $3 local.get $0 i32.load offset=4 local.set $4 @@ -33823,50 +33343,50 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $5 + local.tee $1 select i32.store + local.get $3 + local.get $4 + local.get $1 + select + local.set $3 local.get $0 i32.load offset=8 - local.set $3 + local.set $4 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 - local.get $5 - select - local.tee $1 local.get $3 + local.get $3 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 + local.tee $1 select i32.store offset=4 local.get $0 - local.get $1 local.get $3 local.get $4 + local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $1 + local.set $3 local.get $0 i32.load offset=4 local.set $4 @@ -33874,28 +33394,28 @@ global.set $~argumentsLength local.get $0 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $3 local.get $4 - local.get $2 + local.get $1 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -33913,21 +33433,11 @@ local.tee $5 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 + call $~lib/rt/tlsf/__alloc + local.tee $10 local.get $5 i32.add - local.set $10 + local.set $11 i32.const 0 local.set $5 loop $for-loop|1 @@ -33935,10 +33445,10 @@ local.get $6 i32.lt_u if - local.get $9 local.get $5 i32.const 2 i32.shl + local.get $10 i32.add i32.const -1 i32.store @@ -33952,57 +33462,47 @@ local.get $1 i32.const 2 i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 + call $~lib/rt/tlsf/__alloc + local.set $12 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $7 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $9 i32.const 31 - local.get $8 + local.get $9 i32.const 31 i32.lt_s select - local.tee $1 - local.get $5 + local.tee $7 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $8 + local.get $7 + local.get $9 i32.lt_s if local.get $0 - local.get $1 + local.get $7 i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -34010,23 +33510,23 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $8 + local.get $9 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $1 + local.get $1 + local.get $9 i32.gt_s select local.tee $5 - local.get $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -34036,11 +33536,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $13 i64.div_u local.get $5 local.get $6 @@ -34050,31 +33550,33 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $9 - local.get $4 + local.get $8 i32.const 2 i32.shl + local.get $10 i32.add i32.load - local.tee $13 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $13 - local.get $10 local.get $4 + local.get $11 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -34082,27 +33584,27 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $11 + local.get $7 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $10 i32.add i32.const -1 i32.store - local.get $13 + local.get $4 local.set $3 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 br $for-loop|3 end end - local.get $9 - local.get $7 + local.get $10 + local.get $1 i32.const 2 i32.shl local.tee $4 @@ -34110,15 +33612,15 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $11 i32.add - local.get $1 + local.get $7 i32.store local.get $6 local.set $3 local.get $5 - local.set $1 - local.get $7 + local.set $7 + local.get $1 local.set $4 br $while-continue|2 end @@ -34126,10 +33628,10 @@ loop $for-loop|4 local.get $4 if - local.get $9 local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load local.tee $1 @@ -34138,16 +33640,16 @@ if local.get $0 local.get $1 - local.get $10 local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end @@ -34158,9 +33660,9 @@ br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $9 + local.get $10 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -34186,25 +33688,24 @@ (local $6 i64) (local $7 i64) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add local.tee $8 - i32.const 1 - i32.and - local.get $3 - local.get $8 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $8 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $8 loop $for-loop|0 @@ -34218,12 +33719,12 @@ i32.shl i32.add local.tee $3 - i64.load - local.set $5 - local.get $3 i64.load offset=8 local.tee $7 local.set $6 + local.get $3 + i64.load + local.set $5 i32.const 2 global.set $~argumentsLength local.get $5 @@ -34249,10 +33750,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add i64.load local.set $7 @@ -34266,10 +33767,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $7 i64.store offset=16 @@ -34281,10 +33782,10 @@ end end end - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $5 i64.store offset=16 @@ -34294,10 +33795,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add i64.load local.set $5 @@ -34311,10 +33812,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $5 i64.store offset=8 @@ -34326,10 +33827,10 @@ end end end - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $6 i64.store offset=8 @@ -34353,19 +33854,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add i64.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 3 i32.shl + local.get $0 i32.add i64.load i32.const 2 @@ -34429,14 +33930,14 @@ i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $7 i64.load i64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 + local.get $7 local.get $5 i64.store local.get $2 @@ -34526,17 +34027,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $9 local.get $6 i32.sub i32.const 3 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 3 i32.shl + local.get $0 i32.add i64.load offset=8 i64.store @@ -34552,17 +34053,17 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 3 i32.shl + local.get $4 i32.add i64.load local.set $7 - local.get $4 local.get $2 i32.const 3 i32.shl + local.get $4 i32.add i64.load local.set $8 @@ -34576,10 +34077,10 @@ i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add local.get $7 i64.store @@ -34588,10 +34089,10 @@ i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add local.get $8 i64.store @@ -34615,13 +34116,12 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) + (local $9 i32) (local $10 i32) - (local $11 i64) + (local $11 i32) (local $12 i32) (local $13 i64) - (local $14 i32) - (local $15 i32) + (local $14 i64) local.get $1 i32.const 48 i32.le_s @@ -34635,10 +34135,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -34646,17 +34147,17 @@ end local.get $0 i64.load - local.set $9 + local.set $13 local.get $0 i64.load offset=8 - local.set $11 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 - local.get $9 - local.get $9 - local.get $11 + local.get $14 + local.get $13 + local.get $13 + local.get $14 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34665,49 +34166,49 @@ local.tee $1 select i64.store + local.get $13 + local.get $14 + local.get $1 + select + local.set $13 local.get $0 i64.load offset=16 - local.set $13 + local.set $14 i32.const 2 global.set $~argumentsLength - local.get $9 - local.get $11 - local.get $1 - select - local.tee $9 + local.get $0 + local.get $14 + local.get $13 local.get $13 + local.get $14 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.gt_s - local.set $1 - local.get $0 - local.get $13 - local.get $9 - local.get $1 + local.tee $1 select i64.store offset=8 local.get $0 - local.get $9 local.get $13 + local.get $14 local.get $1 select i64.store offset=16 end local.get $0 i64.load - local.set $9 + local.set $13 local.get $0 i64.load offset=8 - local.set $11 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 - local.get $9 - local.get $9 - local.get $11 + local.get $14 + local.get $13 + local.get $13 + local.get $14 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34717,8 +34218,8 @@ select i64.store local.get $0 - local.get $9 - local.get $11 + local.get $13 + local.get $14 local.get $1 select i64.store offset=8 @@ -34726,7 +34227,7 @@ end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -34741,123 +34242,103 @@ local.tee $6 i32.const 2 i32.shl - local.tee $4 + local.tee $7 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/__alloc + local.tee $11 local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $12 - local.get $4 i32.add - local.set $14 + local.set $10 i32.const 0 - local.set $4 + local.set $7 loop $for-loop|1 - local.get $4 local.get $6 - i32.lt_u + local.get $7 + i32.gt_u if - local.get $12 - local.get $4 + local.get $7 i32.const 2 i32.shl + local.get $11 i32.add i32.const -1 i32.store - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 + local.set $7 br $for-loop|1 end end local.get $1 i32.const 3 i32.shl - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $15 + call $~lib/rt/tlsf/__alloc + local.set $9 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $10 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $5 i32.const 1 i32.add - local.tee $4 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $10 + local.get $12 i32.const 31 - local.get $10 + local.get $12 i32.const 31 i32.lt_s select - local.tee $1 - local.get $4 + local.tee $5 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $10 + local.get $5 + local.get $12 i32.lt_s if local.get $0 - local.get $1 + local.get $5 i32.const 1 i32.add local.tee $6 - local.get $10 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $4 + local.tee $7 local.get $6 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $10 + local.get $12 local.get $6 i32.const 31 i32.add - local.tee $4 - local.get $4 - local.get $10 + local.tee $1 + local.get $1 + local.get $12 i32.gt_s select - local.tee $4 - local.get $7 + local.tee $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -34867,45 +34348,47 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $10 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $14 i64.div_u - local.get $4 local.get $6 + local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $14 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $5 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $12 - local.get $5 + local.get $8 i32.const 2 i32.shl + local.get $11 i32.add i32.load - local.tee $8 + local.tee $4 i32.const -1 i32.ne if local.get $0 + local.get $4 + local.get $10 local.get $8 - local.get $14 - local.get $5 i32.const 2 i32.shl local.tee $3 @@ -34913,54 +34396,54 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $15 + local.get $5 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $4 local.set $3 end - local.get $5 + local.get $8 i32.const 1 i32.sub - local.set $5 + local.set $8 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $1 i32.const 2 i32.shl - local.tee $5 + local.tee $4 i32.add local.get $3 i32.store - local.get $5 - local.get $14 + local.get $4 + local.get $10 i32.add - local.get $1 + local.get $5 i32.store local.get $6 local.set $3 - local.get $4 - local.set $1 local.get $7 local.set $5 + local.get $1 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $5 + local.get $4 if - local.get $12 - local.get $5 + local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load local.tee $1 @@ -34969,29 +34452,29 @@ if local.get $0 local.get $1 - local.get $14 - local.get $5 + local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $10 - local.get $15 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $5 + local.get $4 i32.const 1 i32.sub - local.set $5 + local.set $4 br $for-loop|4 end end - local.get $15 + local.get $9 call $~lib/rt/tlsf/__free - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) @@ -35017,25 +34500,24 @@ (local $6 i64) (local $7 i64) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add local.tee $8 - i32.const 1 - i32.and - local.get $3 - local.get $8 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $8 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $8 loop $for-loop|0 @@ -35049,12 +34531,12 @@ i32.shl i32.add local.tee $3 - i64.load - local.set $5 - local.get $3 i64.load offset=8 local.tee $7 local.set $6 + local.get $3 + i64.load + local.set $5 i32.const 2 global.set $~argumentsLength local.get $5 @@ -35080,10 +34562,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add i64.load local.set $7 @@ -35097,10 +34579,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $7 i64.store offset=16 @@ -35112,10 +34594,10 @@ end end end - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $5 i64.store offset=16 @@ -35125,10 +34607,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add i64.load local.set $5 @@ -35142,10 +34624,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $5 i64.store offset=8 @@ -35157,10 +34639,10 @@ end end end - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add local.get $6 i64.store offset=8 @@ -35184,19 +34666,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add i64.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 3 i32.shl + local.get $0 i32.add i64.load i32.const 2 @@ -35260,14 +34742,14 @@ i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $7 i64.load i64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 + local.get $7 local.get $5 i64.store local.get $2 @@ -35357,17 +34839,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $9 local.get $6 i32.sub i32.const 3 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 3 i32.shl + local.get $0 i32.add i64.load offset=8 i64.store @@ -35383,17 +34865,17 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 3 i32.shl + local.get $4 i32.add i64.load local.set $7 - local.get $4 local.get $2 i32.const 3 i32.shl + local.get $4 i32.add i64.load local.set $8 @@ -35407,10 +34889,10 @@ i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add local.get $7 i64.store @@ -35419,10 +34901,10 @@ i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 3 i32.shl + local.get $0 i32.add local.get $8 i64.store @@ -35446,13 +34928,12 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) + (local $9 i32) (local $10 i32) - (local $11 i64) + (local $11 i32) (local $12 i32) (local $13 i64) - (local $14 i32) - (local $15 i32) + (local $14 i64) local.get $1 i32.const 48 i32.le_s @@ -35466,10 +34947,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -35477,17 +34959,17 @@ end local.get $0 i64.load - local.set $9 + local.set $13 local.get $0 i64.load offset=8 - local.set $11 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 - local.get $9 - local.get $9 - local.get $11 + local.get $14 + local.get $13 + local.get $13 + local.get $14 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35496,49 +34978,49 @@ local.tee $1 select i64.store + local.get $13 + local.get $14 + local.get $1 + select + local.set $13 local.get $0 i64.load offset=16 - local.set $13 + local.set $14 i32.const 2 global.set $~argumentsLength - local.get $9 - local.get $11 - local.get $1 - select - local.tee $9 + local.get $0 + local.get $14 local.get $13 + local.get $13 + local.get $14 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.gt_s - local.set $1 - local.get $0 - local.get $13 - local.get $9 - local.get $1 + local.tee $1 select i64.store offset=8 local.get $0 - local.get $9 local.get $13 + local.get $14 local.get $1 select i64.store offset=16 end local.get $0 i64.load - local.set $9 + local.set $13 local.get $0 i64.load offset=8 - local.set $11 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 - local.get $9 - local.get $9 - local.get $11 + local.get $14 + local.get $13 + local.get $13 + local.get $14 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35548,8 +35030,8 @@ select i64.store local.get $0 - local.get $9 - local.get $11 + local.get $13 + local.get $14 local.get $1 select i64.store offset=8 @@ -35557,7 +35039,7 @@ end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -35572,123 +35054,103 @@ local.tee $6 i32.const 2 i32.shl - local.tee $4 + local.tee $7 i32.const 1 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/__alloc + local.tee $11 local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 i32.add - local.tee $12 - local.get $4 - i32.add - local.set $14 + local.set $10 i32.const 0 - local.set $4 + local.set $7 loop $for-loop|1 - local.get $4 local.get $6 - i32.lt_u + local.get $7 + i32.gt_u if - local.get $12 - local.get $4 + local.get $7 i32.const 2 i32.shl + local.get $11 i32.add i32.const -1 i32.store - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 + local.set $7 br $for-loop|1 end end local.get $1 i32.const 3 i32.shl - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $15 + call $~lib/rt/tlsf/__alloc + local.set $9 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $10 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $5 i32.const 1 i32.add - local.tee $4 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $10 + local.get $12 i32.const 31 - local.get $10 + local.get $12 i32.const 31 i32.lt_s select - local.tee $1 - local.get $4 + local.tee $5 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $10 + local.get $5 + local.get $12 i32.lt_s if local.get $0 - local.get $1 + local.get $5 i32.const 1 i32.add local.tee $6 - local.get $10 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $4 + local.tee $7 local.get $6 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $10 + local.get $12 local.get $6 i32.const 31 i32.add - local.tee $4 - local.get $4 - local.get $10 + local.tee $1 + local.get $1 + local.get $12 i32.gt_s select - local.tee $4 - local.get $7 + local.tee $7 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end @@ -35698,45 +35160,47 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $10 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $14 i64.div_u - local.get $4 local.get $6 + local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $14 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $5 - local.get $7 - i32.gt_u + local.get $1 + local.get $8 + i32.lt_u if - local.get $12 - local.get $5 + local.get $8 i32.const 2 i32.shl + local.get $11 i32.add i32.load - local.tee $8 + local.tee $4 i32.const -1 i32.ne if local.get $0 + local.get $4 + local.get $10 local.get $8 - local.get $14 - local.get $5 i32.const 2 i32.shl local.tee $3 @@ -35744,54 +35208,54 @@ i32.load i32.const 1 i32.add - local.get $1 - local.get $15 + local.get $5 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $4 local.set $3 end - local.get $5 + local.get $8 i32.const 1 i32.sub - local.set $5 + local.set $8 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $1 i32.const 2 i32.shl - local.tee $5 + local.tee $4 i32.add local.get $3 i32.store - local.get $5 - local.get $14 + local.get $4 + local.get $10 i32.add - local.get $1 + local.get $5 i32.store local.get $6 local.set $3 - local.get $4 - local.set $1 local.get $7 local.set $5 + local.get $1 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $5 + local.get $4 if - local.get $12 - local.get $5 + local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load local.tee $1 @@ -35800,29 +35264,29 @@ if local.get $0 local.get $1 - local.get $14 - local.get $5 + local.get $4 i32.const 2 i32.shl + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $10 - local.get $15 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $5 + local.get $4 i32.const 1 i32.sub - local.set $5 + local.set $4 br $for-loop|4 end end - local.get $15 + local.get $9 call $~lib/rt/tlsf/__free - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) @@ -35848,25 +35312,24 @@ (local $6 f32) (local $7 f32) (local $8 i32) - local.get $1 + local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add local.tee $8 - i32.const 1 - i32.and - local.get $3 - local.get $8 local.get $3 i32.sub i32.const 1 i32.and i32.sub + local.get $8 + i32.const 1 + i32.and local.get $3 - i32.eqz select + local.get $1 i32.add local.set $8 loop $for-loop|0 @@ -35880,12 +35343,12 @@ i32.shl i32.add local.tee $3 - f32.load - local.set $5 - local.get $3 f32.load offset=4 local.tee $7 local.set $6 + local.get $3 + f32.load + local.set $5 i32.const 2 global.set $~argumentsLength local.get $5 @@ -35911,10 +35374,10 @@ i32.le_s if block $while-break|1 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add f32.load local.set $7 @@ -35928,10 +35391,10 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add local.get $7 f32.store offset=8 @@ -35943,10 +35406,10 @@ end end end - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add local.get $5 f32.store offset=8 @@ -35956,10 +35419,10 @@ i32.le_s if block $while-break|2 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add f32.load local.set $5 @@ -35973,10 +35436,10 @@ i32.const 0 i32.le_s br_if $while-break|2 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add local.get $5 f32.store offset=4 @@ -35988,10 +35451,10 @@ end end end - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add local.get $6 f32.store offset=4 @@ -36015,19 +35478,19 @@ local.get $1 return end - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add f32.load - local.get $0 local.get $1 i32.const 1 i32.add local.tee $4 i32.const 2 i32.shl + local.get $0 i32.add f32.load i32.const 2 @@ -36091,14 +35554,14 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $7 f32.load f32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 + local.get $7 local.get $5 f32.store local.get $2 @@ -36188,17 +35651,17 @@ local.get $6 i32.gt_s if - local.get $4 local.get $9 local.get $6 i32.sub i32.const 2 i32.shl + local.get $4 i32.add - local.get $0 local.get $6 i32.const 2 i32.shl + local.get $0 i32.add f32.load offset=4 f32.store @@ -36214,17 +35677,17 @@ local.get $3 i32.le_s if - local.get $4 local.get $6 i32.const 2 i32.shl + local.get $4 i32.add f32.load local.set $7 - local.get $4 local.get $2 i32.const 2 i32.shl + local.get $4 i32.add f32.load local.set $8 @@ -36238,10 +35701,10 @@ i32.const 0 i32.lt_s if - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add local.get $7 f32.store @@ -36250,10 +35713,10 @@ i32.sub local.set $6 else - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add local.get $8 f32.store @@ -36280,11 +35743,10 @@ (local $9 i64) (local $10 i32) (local $11 i32) - (local $12 f32) + (local $12 i32) (local $13 i32) (local $14 f32) - (local $15 i32) - (local $16 f32) + (local $15 f32) local.get $1 i32.const 48 i32.le_s @@ -36298,10 +35760,11 @@ block $break|0 block $case1|0 local.get $1 + local.tee $4 i32.const 3 i32.ne if - local.get $1 + local.get $4 i32.const 2 i32.eq br_if $case1|0 @@ -36309,7 +35772,7 @@ end local.get $0 f32.load - local.set $16 + local.set $15 local.get $0 f32.load offset=4 local.set $14 @@ -36317,8 +35780,8 @@ global.set $~argumentsLength local.get $0 local.get $14 - local.get $16 - local.get $16 + local.get $15 + local.get $15 local.get $14 local.get $2 i32.load @@ -36328,39 +35791,39 @@ local.tee $1 select f32.store + local.get $15 + local.get $14 + local.get $1 + select + local.set $15 local.get $0 f32.load offset=8 - local.set $12 + local.set $14 i32.const 2 global.set $~argumentsLength - local.get $16 + local.get $0 + local.get $14 + local.get $15 + local.get $15 local.get $14 - local.get $1 - select - local.tee $16 - local.get $12 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.gt_s - local.set $1 - local.get $0 - local.get $12 - local.get $16 - local.get $1 + local.tee $1 select f32.store offset=4 local.get $0 - local.get $16 - local.get $12 + local.get $15 + local.get $14 local.get $1 select f32.store offset=8 end local.get $0 f32.load - local.set $16 + local.set $15 local.get $0 f32.load offset=4 local.set $14 @@ -36368,8 +35831,8 @@ global.set $~argumentsLength local.get $0 local.get $14 - local.get $16 - local.get $16 + local.get $15 + local.get $15 local.get $14 local.get $2 i32.load @@ -36380,7 +35843,7 @@ select f32.store local.get $0 - local.get $16 + local.get $15 local.get $14 local.get $1 select @@ -36389,7 +35852,7 @@ end local.get $0 i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.sub i32.const 0 @@ -36401,38 +35864,28 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $13 + call $~lib/rt/tlsf/__alloc + local.tee $12 local.get $7 i32.add local.set $11 i32.const 0 local.set $7 loop $for-loop|1 - local.get $5 + local.get $6 local.get $7 i32.gt_u if - local.get $13 local.get $7 i32.const 2 i32.shl + local.get $12 i32.add i32.const -1 i32.store @@ -36446,97 +35899,87 @@ local.get $1 i32.const 2 i32.shl - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + call $~lib/rt/tlsf/__alloc local.set $10 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $15 + local.tee $13 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $1 + local.tee $5 i32.const 1 i32.add - local.tee $7 + local.tee $1 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $15 + local.get $13 i32.const 31 - local.get $15 + local.get $13 i32.const 31 i32.lt_s select - local.tee $1 - local.get $7 + local.tee $5 + local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $1 - local.get $15 + local.get $5 + local.get $13 i32.lt_s if local.get $0 - local.get $1 + local.get $5 i32.const 1 i32.add - local.tee $5 - local.get $15 + local.tee $6 + local.get $13 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 - local.get $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $8 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $15 - local.get $5 + local.get $6 + local.get $13 + local.get $6 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $15 + local.tee $1 + local.get $1 + local.get $13 i32.gt_s select local.tee $7 - local.get $4 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $15 + local.get $13 i32.const 1 i32.add i64.extend_i32_u local.tee $9 i64.div_u - local.get $5 + local.get $6 local.get $7 i32.add i32.const 1 @@ -36549,26 +35992,28 @@ i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $1 + local.get $4 + local.set $8 loop $for-loop|3 - local.get $4 - local.get $6 + local.get $1 + local.get $8 i32.lt_u if - local.get $13 - local.get $6 + local.get $8 i32.const 2 i32.shl + local.get $12 i32.add i32.load - local.tee $8 + local.tee $4 i32.const -1 i32.ne if local.get $0 - local.get $8 + local.get $4 local.get $11 - local.get $6 + local.get $8 i32.const 2 i32.shl local.tee $3 @@ -36576,54 +36021,54 @@ i32.load i32.const 1 i32.add - local.get $1 + local.get $5 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $13 + local.get $12 i32.add i32.const -1 i32.store - local.get $8 + local.get $4 local.set $3 end - local.get $6 + local.get $8 i32.const 1 i32.sub - local.set $6 + local.set $8 br $for-loop|3 end end - local.get $13 - local.get $4 + local.get $12 + local.get $1 i32.const 2 i32.shl - local.tee $6 + local.tee $4 i32.add local.get $3 i32.store - local.get $6 + local.get $4 local.get $11 i32.add - local.get $1 - i32.store local.get $5 + i32.store + local.get $6 local.set $3 local.get $7 - local.set $1 - local.get $4 - local.set $6 + local.set $5 + local.get $1 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $4 if - local.get $13 - local.get $6 + local.get $4 i32.const 2 i32.shl + local.get $12 i32.add i32.load local.tee $1 @@ -36632,29 +36077,29 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $4 i32.const 2 i32.shl + local.get $11 i32.add i32.load i32.const 1 i32.add - local.get $15 + local.get $13 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end local.get $10 call $~lib/rt/tlsf/__free - local.get $13 + local.get $12 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) @@ -36663,21 +36108,21 @@ local.get $0 i32.reinterpret_f32 local.tee $2 - local.get $2 i32.const 31 i32.shr_s i32.const 1 i32.shr_u + local.get $2 i32.xor local.tee $2 local.get $1 i32.reinterpret_f32 local.tee $3 - local.get $3 i32.const 31 i32.shr_s i32.const 1 i32.shr_u + local.get $3 i32.xor local.tee $3 i32.gt_s @@ -36764,13 +36209,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Int8Array#constructor local.tee $2 @@ -36796,10 +36241,10 @@ i32.const 5 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $7 i32.const 3952 i32.store offset=4 - local.get $4 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -36813,7 +36258,7 @@ i64.store local.get $2 i32.load offset=8 - local.set $5 + local.set $6 local.get $1 i32.const 12 i32.const 3 @@ -36821,52 +36266,52 @@ local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $8 + local.set $3 loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s + local.get $6 + local.get $8 + i32.gt_s if local.get $3 local.get $8 i32.add i32.load8_s - local.set $7 + local.set $4 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $3 + local.get $4 + local.get $8 local.get $2 i32.const 3952 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.get $6 + local.get $5 i32.add - local.get $7 + local.get $4 i32.store8 local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $8 i32.const 1 i32.add - local.set $3 + local.set $8 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $5 local.get $0 call $~lib/rt/itcms/__renew local.tee $2 @@ -36884,14 +36329,15 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $7 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -36900,7 +36346,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.ne @@ -36912,7 +36358,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 3 @@ -36925,7 +36371,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 @@ -36938,7 +36384,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 5 @@ -36984,13 +36430,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Uint8Array#constructor local.tee $2 @@ -37016,10 +36462,10 @@ i32.const 5 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $7 i32.const 3984 i32.store offset=4 - local.get $4 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -37033,7 +36479,7 @@ i64.store local.get $2 i32.load offset=8 - local.set $5 + local.set $6 local.get $1 i32.const 12 i32.const 4 @@ -37041,52 +36487,52 @@ local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $8 + local.set $3 loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s + local.get $6 + local.get $8 + i32.gt_s if local.get $3 local.get $8 i32.add i32.load8_u - local.set $7 + local.set $4 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $3 + local.get $4 + local.get $8 local.get $2 i32.const 3984 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.get $6 + local.get $5 i32.add - local.get $7 + local.get $4 i32.store8 local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $8 i32.const 1 i32.add - local.set $3 + local.set $8 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $5 local.get $0 call $~lib/rt/itcms/__renew local.tee $2 @@ -37104,14 +36550,15 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $7 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -37120,7 +36567,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.ne @@ -37132,7 +36579,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 3 @@ -37145,7 +36592,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 @@ -37158,7 +36605,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 5 @@ -37204,13 +36651,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 @@ -37236,10 +36683,10 @@ i32.const 5 call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $7 i32.const 4016 i32.store offset=4 - local.get $4 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -37253,7 +36700,7 @@ i64.store local.get $2 i32.load offset=8 - local.set $5 + local.set $6 local.get $1 i32.const 12 i32.const 5 @@ -37261,52 +36708,52 @@ local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $8 + local.set $3 loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s + local.get $6 + local.get $8 + i32.gt_s if local.get $3 local.get $8 i32.add i32.load8_u - local.set $7 + local.set $4 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $3 + local.get $4 + local.get $8 local.get $2 i32.const 4016 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.get $6 + local.get $5 i32.add - local.get $7 + local.get $4 i32.store8 local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $8 i32.const 1 i32.add - local.set $3 + local.set $8 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $5 local.get $0 call $~lib/rt/itcms/__renew local.tee $2 @@ -37324,14 +36771,15 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $7 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -37340,7 +36788,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.ne @@ -37352,7 +36800,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 @@ -37365,7 +36813,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 @@ -37378,7 +36826,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 @@ -37424,13 +36872,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Int16Array#constructor local.tee $2 @@ -37456,10 +36904,10 @@ i32.const 5 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $6 i32.const 4048 i32.store offset=4 - local.get $4 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -37488,81 +36936,82 @@ i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 local.get $2 i32.load offset=4 local.set $8 loop $for-loop|0 - local.get $3 local.get $5 - i32.lt_s + local.get $7 + i32.gt_s if local.get $8 - local.get $3 + local.get $7 i32.const 1 i32.shl i32.add i32.load16_s - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $3 + local.get $7 local.get $2 i32.const 4048 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $6 + local.get $4 local.get $0 i32.const 1 i32.shl i32.add - local.get $7 + local.get $3 i32.store16 local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $4 local.get $0 i32.const 1 i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew local.tee $2 + call $~lib/rt/itcms/__renew + local.tee $8 i32.store local.get $1 - local.get $2 + local.get $8 call $~lib/rt/itcms/__link local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 - local.get $2 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -37571,7 +37020,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 1 i32.shr_u @@ -37585,7 +37034,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 3 @@ -37598,7 +37047,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 @@ -37611,7 +37060,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 5 @@ -37657,13 +37106,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Uint16Array#constructor local.tee $2 @@ -37689,10 +37138,10 @@ i32.const 5 call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $6 i32.const 4080 i32.store offset=4 - local.get $4 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -37721,81 +37170,82 @@ i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 local.get $2 i32.load offset=4 local.set $8 loop $for-loop|0 - local.get $3 local.get $5 - i32.lt_s + local.get $7 + i32.gt_s if local.get $8 - local.get $3 + local.get $7 i32.const 1 i32.shl i32.add i32.load16_u - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $3 + local.get $7 local.get $2 i32.const 4080 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $6 + local.get $4 local.get $0 i32.const 1 i32.shl i32.add - local.get $7 + local.get $3 i32.store16 local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $4 local.get $0 i32.const 1 i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew local.tee $2 + call $~lib/rt/itcms/__renew + local.tee $8 i32.store local.get $1 - local.get $2 + local.get $8 call $~lib/rt/itcms/__link local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 - local.get $2 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -37804,7 +37254,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 1 i32.shr_u @@ -37818,7 +37268,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 3 @@ -37831,7 +37281,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 @@ -37844,7 +37294,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 5 @@ -37890,13 +37340,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Int32Array#constructor local.tee $2 @@ -37922,10 +37372,10 @@ i32.const 5 call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $6 i32.const 4112 i32.store offset=4 - local.get $4 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -37954,81 +37404,82 @@ i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 local.get $2 i32.load offset=4 local.set $8 loop $for-loop|0 - local.get $3 local.get $5 - i32.lt_s + local.get $7 + i32.gt_s if local.get $8 - local.get $3 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $3 + local.get $7 local.get $2 i32.const 4112 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $6 + local.get $4 local.get $0 i32.const 2 i32.shl i32.add - local.get $7 + local.get $3 i32.store local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $4 local.get $0 i32.const 2 i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew local.tee $2 + call $~lib/rt/itcms/__renew + local.tee $8 i32.store local.get $1 - local.get $2 + local.get $8 call $~lib/rt/itcms/__link local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 - local.get $2 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -38037,7 +37488,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -38051,7 +37502,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -38064,7 +37515,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 @@ -38077,7 +37528,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 5 @@ -38123,13 +37574,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Uint32Array#constructor local.tee $2 @@ -38155,10 +37606,10 @@ i32.const 5 call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $6 i32.const 4144 i32.store offset=4 - local.get $4 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -38187,81 +37638,82 @@ i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 local.get $2 i32.load offset=4 local.set $8 loop $for-loop|0 - local.get $3 local.get $5 - i32.lt_s + local.get $7 + i32.gt_s if local.get $8 - local.get $3 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $3 + local.get $7 local.get $2 i32.const 4144 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $6 + local.get $4 local.get $0 i32.const 2 i32.shl i32.add - local.get $7 + local.get $3 i32.store local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $4 local.get $0 i32.const 2 i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew local.tee $2 + call $~lib/rt/itcms/__renew + local.tee $8 i32.store local.get $1 - local.get $2 + local.get $8 call $~lib/rt/itcms/__link local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 - local.get $2 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -38270,7 +37722,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -38284,7 +37736,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 3 @@ -38297,7 +37749,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 @@ -38310,7 +37762,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 5 @@ -38340,11 +37792,11 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i64) + (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -38356,13 +37808,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Int64Array#constructor local.tee $2 @@ -38388,10 +37840,10 @@ i64.const 5 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $6 i32.const 4176 i32.store offset=4 - local.get $4 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -38420,81 +37872,82 @@ i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 local.get $2 i32.load offset=4 local.set $8 loop $for-loop|0 - local.get $3 local.get $5 - i32.lt_s + local.get $7 + i32.gt_s if local.get $8 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add i64.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $3 + local.get $7 local.get $2 i32.const 4176 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) if - local.get $6 + local.get $4 local.get $0 i32.const 3 i32.shl i32.add - local.get $7 + local.get $3 i64.store local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $4 local.get $0 i32.const 3 i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew local.tee $2 + call $~lib/rt/itcms/__renew + local.tee $8 i32.store local.get $1 - local.get $2 + local.get $8 call $~lib/rt/itcms/__link local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 - local.get $2 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -38503,7 +37956,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -38517,7 +37970,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 3 @@ -38530,7 +37983,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 @@ -38543,7 +37996,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 5 @@ -38573,11 +38026,11 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i64) + (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -38589,13 +38042,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Uint64Array#constructor local.tee $2 @@ -38621,10 +38074,10 @@ i64.const 5 call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $6 i32.const 4208 i32.store offset=4 - local.get $4 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -38653,81 +38106,82 @@ i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 local.get $2 i32.load offset=4 local.set $8 loop $for-loop|0 - local.get $3 local.get $5 - i32.lt_s + local.get $7 + i32.gt_s if local.get $8 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add i64.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $3 + local.get $7 local.get $2 i32.const 4208 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) if - local.get $6 + local.get $4 local.get $0 i32.const 3 i32.shl i32.add - local.get $7 + local.get $3 i64.store local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $4 local.get $0 i32.const 3 i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew local.tee $2 + call $~lib/rt/itcms/__renew + local.tee $8 i32.store local.get $1 - local.get $2 + local.get $8 call $~lib/rt/itcms/__link local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 - local.get $2 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -38736,7 +38190,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -38750,7 +38204,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 3 @@ -38763,7 +38217,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 @@ -38776,7 +38230,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 5 @@ -38806,11 +38260,11 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) + (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -38822,13 +38276,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Float32Array#constructor local.tee $2 @@ -38854,10 +38308,10 @@ f32.const 5 call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $6 i32.const 4240 i32.store offset=4 - local.get $4 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -38886,81 +38340,82 @@ i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 local.get $2 i32.load offset=4 local.set $8 loop $for-loop|0 - local.get $3 local.get $5 - i32.lt_s + local.get $7 + i32.gt_s if local.get $8 - local.get $3 + local.get $7 i32.const 2 i32.shl i32.add f32.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $3 + local.get $7 local.get $2 i32.const 4240 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) if - local.get $6 + local.get $4 local.get $0 i32.const 2 i32.shl i32.add - local.get $7 + local.get $3 f32.store local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $4 local.get $0 i32.const 2 i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew local.tee $2 + call $~lib/rt/itcms/__renew + local.tee $8 i32.store local.get $1 - local.get $2 + local.get $8 call $~lib/rt/itcms/__link local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 - local.get $2 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -38969,7 +38424,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -38983,7 +38438,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 3 @@ -38996,7 +38451,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 @@ -39009,7 +38464,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 5 @@ -39039,11 +38494,11 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f64) + (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -39055,13 +38510,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Float64Array#constructor local.tee $2 @@ -39087,10 +38542,10 @@ f64.const 5 call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $6 i32.const 4272 i32.store offset=4 - local.get $4 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -39119,81 +38574,82 @@ i32.shl i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 local.get $2 i32.load offset=4 local.set $8 loop $for-loop|0 - local.get $3 local.get $5 - i32.lt_s + local.get $7 + i32.gt_s if local.get $8 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add f64.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $3 + local.get $7 local.get $2 i32.const 4272 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) if - local.get $6 + local.get $4 local.get $0 i32.const 3 i32.shl i32.add - local.get $7 + local.get $3 f64.store local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end local.get $1 - local.get $6 + local.get $4 local.get $0 i32.const 3 i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew local.tee $2 + call $~lib/rt/itcms/__renew + local.tee $8 i32.store local.get $1 - local.get $2 + local.get $8 call $~lib/rt/itcms/__link local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 - local.get $2 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 local.get $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load - i32.ne + i32.sub if i32.const 0 i32.const 1568 @@ -39202,7 +38658,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -39216,7 +38672,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 3 @@ -39229,7 +38685,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 @@ -39242,7 +38698,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -39292,85 +38748,13 @@ local.get $3 i32.const 7152 i32.store - local.get $0 - i32.const 255 - i32.and i32.const 7152 local.get $1 call $~lib/array/Array#__get i32.const 255 i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 7152 - i32.store local.get $0 - i32.const 65535 - i32.and - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - i32.const 65535 + i32.const 255 i32.and i32.ne if @@ -39412,7 +38796,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -39439,7 +38823,11 @@ i32.const 7152 local.get $1 call $~lib/array/Array#__get + i32.const 65535 + i32.and local.get $0 + i32.const 65535 + i32.and i32.ne if i32.const 0 @@ -39480,7 +38868,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -39504,12 +38892,11 @@ local.get $3 i32.const 7152 i32.store - local.get $0 i32.const 7152 local.get $1 call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne + local.get $0 + i32.ne if i32.const 0 i32.const 1568 @@ -39549,7 +38936,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -39577,8 +38964,8 @@ i32.const 7152 local.get $1 call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne + i64.extend_i32_s + i64.ne if i32.const 0 i32.const 1568 @@ -39618,7 +39005,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -39646,8 +39033,8 @@ i32.const 7152 local.get $1 call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne + f32.convert_i32_s + f32.ne if i32.const 0 i32.const 1568 @@ -39687,17 +39074,10 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -39712,243 +39092,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 + local.tee $3 i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 i32.store + local.get $3 + i32.const 7152 + i32.store + local.get $0 + i32.const 7152 local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $5 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|00 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - local.get $4 - i32.add - local.tee $6 - i32.load8_s - local.set $7 - local.get $6 - local.get $3 - local.get $4 - i32.add - local.tee $6 - i32.load8_s - i32.store8 - local.get $6 - local.get $7 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|00 - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int8Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.extend8_s - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|02 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $5 - i32.add - local.tee $4 - i32.load8_s - local.set $6 - local.get $4 - local.get $3 - local.get $5 - i32.add - local.tee $4 - i32.load8_s - i32.store8 - local.get $4 - local.get $6 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|02 - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 - i32.ne + call $~lib/array/Array#__get + f64.convert_i32_s + f64.ne if i32.const 0 i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 536 + i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 + global.get $std/typedarray/forEachCallCount i32.ne if i32.const 0 i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 537 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#__get - i32.const 5 + local.get $2 + global.get $std/typedarray/forEachSelf i32.ne if i32.const 0 i32.const 1568 - i32.const 578 - i32.const 3 + i32.const 538 + i32.const 5 call $~lib/builtins/abort unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -39989,12 +39184,12 @@ i32.const 7628 i32.load local.tee $2 - call $~lib/typedarray/Uint8Array#constructor + call $~lib/typedarray/Int8Array#constructor local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/typedarray/Uint8Array#constructor + call $~lib/typedarray/Int8Array#constructor local.tee $5 i32.store offset=8 loop $for-loop|0 @@ -40007,17 +39202,15 @@ i32.const 7616 local.get $0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + i32.extend8_s + call $~lib/typedarray/Int8Array#__set local.get $5 local.get $0 i32.const 7616 local.get $0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + i32.extend8_s + call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 1 i32.add @@ -40044,14 +39237,14 @@ local.get $4 i32.add local.tee $6 - i32.load8_u + i32.load8_s local.set $7 local.get $6 local.get $3 local.get $4 i32.add local.tee $6 - i32.load8_u + i32.load8_s i32.store8 local.get $6 local.get $7 @@ -40076,7 +39269,7 @@ if local.get $1 local.get $0 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 7616 local.get $2 i32.const 1 @@ -40084,8 +39277,7 @@ local.get $0 i32.sub call $~lib/array/Array#__get - i32.const 255 - i32.and + i32.extend8_s i32.ne if i32.const 0 @@ -40104,8 +39296,9 @@ end global.get $~lib/memory/__stack_pointer local.get $5 + i32.const 4 i32.const 8 - call $~lib/typedarray/Uint8Array#subarray + call $~lib/typedarray/Int8Array#subarray local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -40129,14 +39322,14 @@ local.get $5 i32.add local.tee $4 - i32.load8_u + i32.load8_s local.set $6 local.get $4 local.get $3 local.get $5 i32.add local.tee $4 - i32.load8_u + i32.load8_s i32.store8 local.get $4 local.get $6 @@ -40156,7 +39349,7 @@ i32.store offset=16 local.get $1 i32.const 0 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 8 i32.ne if @@ -40169,7 +39362,7 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 7 i32.ne if @@ -40182,7 +39375,7 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 6 i32.ne if @@ -40195,7 +39388,7 @@ end local.get $1 i32.const 3 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 5 i32.ne if @@ -40211,7 +39404,270 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 7616 + i32.store + local.get $1 + i32.const 7628 + i32.load + local.tee $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $5 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $0 + local.get $4 + i32.add + local.tee $6 + i32.load8_u + local.set $7 + local.get $6 + local.get $3 + local.get $4 + i32.add + local.tee $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Uint8Array#__get + i32.const 7616 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $5 + i32.add + local.tee $4 + i32.load8_u + local.set $6 + local.get $4 + local.get $3 + local.get $5 + i32.add + local.tee $4 + i32.load8_u + i32.store8 + local.get $4 + local.get $6 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 + end + end + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -42777,9 +42233,10 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) + (local $7 i32) + (local $8 f32) + (local $9 f64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -42796,99 +42253,98 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Int8Array#constructor - local.tee $1 + local.tee $10 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 i32.const 15 i32.const 11312 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=16 - local.get $1 local.get $0 + local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 - local.get $1 + local.get $0 i32.load offset=8 i32.const 11100 i32.load @@ -42896,47 +42352,47 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 3 i32.add - local.set $5 + local.set $6 i32.const 11092 i32.load - local.set $6 + local.set $7 i32.const 11100 i32.load - local.set $9 + local.set $3 loop $for-loop|0 - local.get $0 - local.get $9 + local.get $2 + local.get $3 i32.lt_s if - local.get $0 - local.get $5 - i32.add + local.get $2 local.get $6 - local.get $0 + i32.add + local.get $7 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.tee $7 - local.get $7 + local.tee $8 + local.get $8 f32.sub f32.const 0 f32.eq if (result i32) - local.get $7 + local.get $8 i32.trunc_f32_s else i32.const 0 end i32.store8 - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -42945,34 +42401,34 @@ i32.const 15 i32.const 11392 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 - local.get $1 local.get $0 + local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $0 local.get $1 - local.get $3 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 0 i32.const 15 i32.const 11424 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 i32.const 0 - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=8 i32.const 11196 i32.load @@ -42980,48 +42436,48 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 2 i32.add local.set $3 i32.const 11188 i32.load - local.set $5 + local.set $6 i32.const 11196 i32.load - local.set $6 - loop $for-loop|00 - local.get $0 - local.get $6 + local.set $7 + loop $for-loop|04 + local.get $1 + local.get $7 i32.lt_s if - local.get $0 + local.get $1 local.get $3 i32.add - local.get $5 - local.get $0 + local.get $6 + local.get $1 i32.const 3 i32.shl i32.add f64.load - local.tee $8 - local.get $8 + local.tee $9 + local.get $9 f64.sub f64.const 0 f64.eq if (result i32) - local.get $8 + local.get $9 i32.trunc_f64_s else i32.const 0 end i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $1 + br $for-loop|04 end end i32.const 10 @@ -43029,35 +42485,35 @@ i32.const 15 i32.const 11456 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $0 local.get $4 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + local.get $0 + local.get $5 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 i32.const 15 i32.const 11488 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 - local.get $1 - local.get $2 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -43169,9 +42625,10 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) + (local $7 i32) + (local $8 f32) + (local $9 f64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -43188,99 +42645,98 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint8Array#constructor - local.tee $1 + local.tee $10 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 i32.const 63 i32.const 11520 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=16 - local.get $1 local.get $0 + local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 - local.get $1 + local.get $0 i32.load offset=8 i32.const 11100 i32.load @@ -43288,47 +42744,47 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 3 i32.add - local.set $5 + local.set $6 i32.const 11092 i32.load - local.set $6 + local.set $7 i32.const 11100 i32.load - local.set $9 + local.set $3 loop $for-loop|0 - local.get $0 - local.get $9 + local.get $2 + local.get $3 i32.lt_s if - local.get $0 - local.get $5 - i32.add + local.get $2 local.get $6 - local.get $0 + i32.add + local.get $7 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.tee $7 - local.get $7 + local.tee $8 + local.get $8 f32.sub f32.const 0 f32.eq if (result i32) - local.get $7 + local.get $8 i32.trunc_f32_u else i32.const 0 end i32.store8 - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -43337,34 +42793,34 @@ i32.const 63 i32.const 11600 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 - local.get $1 local.get $0 + local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $0 local.get $1 - local.get $3 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 0 i32.const 63 i32.const 11632 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 i32.const 0 - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.load offset=8 i32.const 11196 i32.load @@ -43372,48 +42828,48 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 2 i32.add local.set $3 i32.const 11188 i32.load - local.set $5 + local.set $6 i32.const 11196 i32.load - local.set $6 - loop $for-loop|00 - local.get $0 - local.get $6 + local.set $7 + loop $for-loop|04 + local.get $1 + local.get $7 i32.lt_s if - local.get $0 + local.get $1 local.get $3 i32.add - local.get $5 - local.get $0 + local.get $6 + local.get $1 i32.const 3 i32.shl i32.add f64.load - local.tee $8 - local.get $8 + local.tee $9 + local.get $9 f64.sub f64.const 0 f64.eq if (result i32) - local.get $8 + local.get $9 i32.trunc_f64_u else i32.const 0 end i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $1 + br $for-loop|04 end end i32.const 10 @@ -43421,35 +42877,35 @@ i32.const 63 i32.const 11664 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $0 local.get $4 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + local.get $0 + local.get $5 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 i32.const 63 i32.const 11696 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 - local.get $1 - local.get $2 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -43565,6 +43021,7 @@ (local $8 i32) (local $9 f32) (local $10 f64) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -43648,24 +43105,25 @@ global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $11 local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 block $folding-inner0 - local.get $1 - i32.load offset=8 i32.const 11020 i32.load - i32.lt_s + local.get $1 + i32.load offset=8 + i32.gt_s br_if $folding-inner0 local.get $1 i32.load offset=4 - local.set $6 + local.set $5 i32.const 11012 i32.load - local.set $7 + local.set $6 i32.const 11020 i32.load local.set $8 @@ -43675,22 +43133,22 @@ i32.lt_s if local.get $0 - local.get $6 + local.get $5 i32.add - local.get $7 + local.get $6 local.get $0 i32.const 2 i32.shl i32.add i32.load - local.tee $5 + local.tee $7 i32.const 31 i32.shr_s i32.const -1 i32.xor - local.get $5 + local.get $7 i32.const 255 - local.get $5 + local.get $7 i32.sub i32.const 31 i32.shr_s @@ -43733,22 +43191,22 @@ i32.load offset=4 i32.const 3 i32.add - local.set $6 + local.set $5 i32.const 11092 i32.load - local.set $7 + local.set $6 i32.const 11100 i32.load local.set $8 - loop $for-loop|00 + loop $for-loop|04 local.get $0 local.get $8 i32.lt_s if local.get $0 - local.get $6 + local.get $5 i32.add - local.get $7 + local.get $6 local.get $0 i32.const 2 i32.shl @@ -43774,7 +43232,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|00 + br $for-loop|04 end end i32.const 10 @@ -43822,22 +43280,22 @@ i32.load offset=4 i32.const 2 i32.add - local.set $5 + local.set $7 i32.const 11188 i32.load - local.set $6 + local.set $5 i32.const 11196 i32.load - local.set $7 - loop $for-loop|01 + local.set $6 + loop $for-loop|08 local.get $0 - local.get $7 + local.get $6 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.add - local.get $6 + local.get $5 local.get $0 i32.const 3 i32.shl @@ -43863,7 +43321,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|01 + br $for-loop|08 end end i32.const 10 @@ -43889,7 +43347,7 @@ i32.const 11264 i32.store offset=16 i32.const 0 - local.set $2 + local.set $0 local.get $1 i32.load offset=8 i32.const 11276 @@ -43902,44 +43360,44 @@ i32.load offset=4 i32.const 7 i32.add - local.set $3 + local.set $2 i32.const 11268 i32.load - local.set $4 + local.set $3 i32.const 11276 i32.load - local.set $5 - loop $for-loop|02 - local.get $2 - local.get $5 + local.set $4 + loop $for-loop|012 + local.get $0 + local.get $4 i32.lt_s if + local.get $0 local.get $2 - local.get $3 i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.add i32.load8_s - local.tee $0 + local.tee $1 i32.const 31 i32.shr_s i32.const -1 i32.xor - local.get $0 + local.get $1 i32.const 255 - local.get $0 + local.get $1 i32.sub i32.const 31 i32.shr_s i32.or i32.and i32.store8 - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|02 + local.set $0 + br $for-loop|012 end end i32.const 10 @@ -43947,12 +43405,12 @@ i32.const 63 i32.const 11920 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=16 + local.get $11 local.get $1 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -44069,9 +43527,10 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) + (local $7 i32) + (local $8 f32) + (local $9 f64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -44088,151 +43547,150 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Int16Array#constructor - local.tee $1 + local.tee $10 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 i32.const 64 i32.const 11952 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=16 - local.get $1 local.get $0 + local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 i32.const 11100 i32.load i32.const 3 i32.add - local.get $1 + local.get $0 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 6 i32.add - local.set $5 + local.set $6 i32.const 11092 i32.load - local.set $6 + local.set $7 i32.const 11100 i32.load - local.set $9 + local.set $3 loop $for-loop|0 - local.get $0 - local.get $9 + local.get $2 + local.get $3 i32.lt_s if - local.get $5 - local.get $0 + local.get $6 + local.get $2 i32.const 1 i32.shl i32.add - local.get $6 - local.get $0 + local.get $7 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.tee $7 - local.get $7 + local.tee $8 + local.get $8 f32.sub f32.const 0 f32.eq if (result i32) - local.get $7 + local.get $8 i32.trunc_f32_s else i32.const 0 end i32.store16 - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -44241,87 +43699,87 @@ i32.const 64 i32.const 12048 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 - local.get $1 local.get $0 + local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $0 local.get $1 - local.get $3 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 1 i32.const 64 i32.const 12096 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $1 + local.get $0 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 4 i32.add local.set $3 i32.const 11188 i32.load - local.set $5 + local.set $6 i32.const 11196 i32.load - local.set $6 - loop $for-loop|00 - local.get $0 - local.get $6 + local.set $7 + loop $for-loop|04 + local.get $1 + local.get $7 i32.lt_s if local.get $3 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add - local.get $5 - local.get $0 + local.get $6 + local.get $1 i32.const 3 i32.shl i32.add f64.load - local.tee $8 - local.get $8 + local.tee $9 + local.get $9 f64.sub f64.const 0 f64.eq if (result i32) - local.get $8 + local.get $9 i32.trunc_f64_s else i32.const 0 end i32.store16 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $1 + br $for-loop|04 end end i32.const 10 @@ -44329,35 +43787,35 @@ i32.const 64 i32.const 12144 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $0 local.get $4 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + local.get $0 + local.get $5 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 i32.const 64 i32.const 12192 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 - local.get $1 - local.get $2 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -44474,9 +43932,10 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) + (local $7 i32) + (local $8 f32) + (local $9 f64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -44493,151 +43952,150 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint16Array#constructor - local.tee $1 + local.tee $10 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 i32.const 65 i32.const 12240 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=16 - local.get $1 local.get $0 + local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 i32.const 11100 i32.load i32.const 3 i32.add - local.get $1 + local.get $0 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 6 i32.add - local.set $5 + local.set $6 i32.const 11092 i32.load - local.set $6 + local.set $7 i32.const 11100 i32.load - local.set $9 + local.set $3 loop $for-loop|0 - local.get $0 - local.get $9 + local.get $2 + local.get $3 i32.lt_s if - local.get $5 - local.get $0 + local.get $6 + local.get $2 i32.const 1 i32.shl i32.add - local.get $6 - local.get $0 + local.get $7 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.tee $7 - local.get $7 + local.tee $8 + local.get $8 f32.sub f32.const 0 f32.eq if (result i32) - local.get $7 + local.get $8 i32.trunc_f32_u else i32.const 0 end i32.store16 - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -44646,87 +44104,87 @@ i32.const 65 i32.const 12336 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 - local.get $1 local.get $0 + local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $0 local.get $1 - local.get $3 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 1 i32.const 65 i32.const 12384 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $1 + local.get $0 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 4 i32.add local.set $3 i32.const 11188 i32.load - local.set $5 + local.set $6 i32.const 11196 i32.load - local.set $6 - loop $for-loop|00 - local.get $0 - local.get $6 + local.set $7 + loop $for-loop|04 + local.get $1 + local.get $7 i32.lt_s if local.get $3 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add - local.get $5 - local.get $0 + local.get $6 + local.get $1 i32.const 3 i32.shl i32.add f64.load - local.tee $8 - local.get $8 + local.tee $9 + local.get $9 f64.sub f64.const 0 f64.eq if (result i32) - local.get $8 + local.get $9 i32.trunc_f64_u else i32.const 0 end i32.store16 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $1 + br $for-loop|04 end end i32.const 10 @@ -44734,35 +44192,35 @@ i32.const 65 i32.const 12432 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $0 local.get $4 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + local.get $0 + local.get $5 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 i32.const 65 i32.const 12480 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 - local.get $1 - local.get $2 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -44883,6 +44341,7 @@ (local $8 f32) (local $9 f64) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -44928,44 +44387,45 @@ global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $4 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Int32Array#constructor + local.tee $10 local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -44990,8 +44450,6 @@ global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $2 block $folding-inner0 i32.const 11100 i32.load @@ -45007,25 +44465,25 @@ i32.load offset=4 i32.const 12 i32.add - local.set $5 + local.set $6 i32.const 11092 i32.load - local.set $6 + local.set $7 i32.const 11100 i32.load - local.set $10 + local.set $11 loop $for-loop|0 - local.get $2 - local.get $10 + local.get $3 + local.get $11 i32.lt_s if - local.get $5 - local.get $2 + local.get $6 + local.get $3 i32.const 2 i32.shl - local.tee $7 + local.tee $2 i32.add - local.get $6 + local.get $2 local.get $7 i32.add f32.load @@ -45041,10 +44499,10 @@ i32.const 0 end i32.store - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end @@ -45053,12 +44511,12 @@ i32.const 16 i32.const 12640 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=16 local.get $0 - local.get $2 + local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> local.get $0 local.get $1 @@ -45094,24 +44552,24 @@ i32.load offset=4 i32.const 8 i32.add - local.set $7 + local.set $2 i32.const 11188 i32.load - local.set $5 + local.set $6 i32.const 11196 i32.load - local.set $6 - loop $for-loop|00 + local.set $7 + loop $for-loop|04 local.get $1 - local.get $6 + local.get $7 i32.lt_s if - local.get $7 + local.get $2 local.get $1 i32.const 2 i32.shl i32.add - local.get $5 + local.get $6 local.get $1 i32.const 3 i32.shl @@ -45133,7 +44591,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|00 + br $for-loop|04 end end i32.const 10 @@ -45149,10 +44607,10 @@ local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> local.get $0 - local.get $3 + local.get $4 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> local.get $0 - local.get $4 + local.get $5 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 @@ -45164,12 +44622,12 @@ i32.const 16 i32.const 12832 call $~lib/rt/__newArray - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=16 + local.get $10 local.get $0 - local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -45290,6 +44748,7 @@ (local $8 f32) (local $9 f64) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -45335,44 +44794,45 @@ global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $4 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint32Array#constructor + local.tee $10 local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -45397,8 +44857,6 @@ global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $2 block $folding-inner0 i32.const 11100 i32.load @@ -45414,25 +44872,25 @@ i32.load offset=4 i32.const 12 i32.add - local.set $5 + local.set $6 i32.const 11092 i32.load - local.set $6 + local.set $7 i32.const 11100 i32.load - local.set $10 + local.set $11 loop $for-loop|0 - local.get $2 - local.get $10 + local.get $3 + local.get $11 i32.lt_s if - local.get $5 - local.get $2 + local.get $6 + local.get $3 i32.const 2 i32.shl - local.tee $7 + local.tee $2 i32.add - local.get $6 + local.get $2 local.get $7 i32.add f32.load @@ -45448,10 +44906,10 @@ i32.const 0 end i32.store - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end @@ -45460,12 +44918,12 @@ i32.const 66 i32.const 13008 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=16 local.get $0 - local.get $2 + local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> local.get $0 local.get $1 @@ -45501,24 +44959,24 @@ i32.load offset=4 i32.const 8 i32.add - local.set $7 + local.set $2 i32.const 11188 i32.load - local.set $5 + local.set $6 i32.const 11196 i32.load - local.set $6 - loop $for-loop|00 + local.set $7 + loop $for-loop|04 local.get $1 - local.get $6 + local.get $7 i32.lt_s if - local.get $7 + local.get $2 local.get $1 i32.const 2 i32.shl i32.add - local.get $5 + local.get $6 local.get $1 i32.const 3 i32.shl @@ -45540,7 +44998,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|00 + br $for-loop|04 end end i32.const 10 @@ -45556,10 +45014,10 @@ local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> local.get $0 - local.get $3 + local.get $4 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> local.get $0 - local.get $4 + local.get $5 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 @@ -45571,12 +45029,12 @@ i32.const 66 i32.const 13200 call $~lib/rt/__newArray - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=16 + local.get $10 local.get $0 - local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -45697,6 +45155,7 @@ (local $7 i32) (local $8 f32) (local $9 f64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -45713,113 +45172,112 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $10 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> i32.const 10 i32.const 3 i32.const 67 i32.const 13264 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=16 - local.get $1 local.get $0 + local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 i32.const 11100 i32.load i32.const 3 i32.add - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 24 i32.add - local.set $5 + local.set $3 i32.const 11092 i32.load local.set $6 @@ -45827,17 +45285,17 @@ i32.load local.set $7 loop $for-loop|0 - local.get $0 + local.get $2 local.get $7 i32.lt_s if - local.get $5 - local.get $0 + local.get $3 + local.get $2 i32.const 3 i32.shl i32.add local.get $6 - local.get $0 + local.get $2 i32.const 2 i32.shl i32.add @@ -45854,10 +45312,10 @@ i64.const 0 end i64.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -45866,66 +45324,66 @@ i32.const 67 i32.const 13424 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 - local.get $1 local.get $0 + local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $0 local.get $1 - local.get $3 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 3 i32.const 67 i32.const 13536 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 16 i32.add - local.set $3 + local.set $2 i32.const 11188 i32.load - local.set $5 + local.set $3 i32.const 11196 i32.load local.set $6 - loop $for-loop|00 - local.get $0 + loop $for-loop|04 + local.get $1 local.get $6 i32.lt_s if - local.get $3 - local.get $0 + local.get $2 + local.get $1 i32.const 3 i32.shl local.tee $7 i32.add - local.get $5 + local.get $3 local.get $7 i32.add f64.load @@ -45941,11 +45399,11 @@ i64.const 0 end i64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $1 + br $for-loop|04 end end i32.const 10 @@ -45953,35 +45411,35 @@ i32.const 67 i32.const 13648 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $0 local.get $4 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + local.get $0 + local.get $5 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> i32.const 10 i32.const 3 i32.const 67 i32.const 13760 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 - local.get $1 - local.get $2 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -46102,6 +45560,7 @@ (local $7 i32) (local $8 f32) (local $9 f64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -46118,113 +45577,112 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $1 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $5 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint64Array#constructor - local.tee $1 + local.tee $10 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> i32.const 10 i32.const 3 i32.const 68 i32.const 13872 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=16 - local.get $1 local.get $0 + local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 i32.const 11100 i32.load i32.const 3 i32.add - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 24 i32.add - local.set $5 + local.set $3 i32.const 11092 i32.load local.set $6 @@ -46232,17 +45690,17 @@ i32.load local.set $7 loop $for-loop|0 - local.get $0 + local.get $2 local.get $7 i32.lt_s if - local.get $5 - local.get $0 + local.get $3 + local.get $2 i32.const 3 i32.shl i32.add local.get $6 - local.get $0 + local.get $2 i32.const 2 i32.shl i32.add @@ -46259,10 +45717,10 @@ i64.const 0 end i64.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -46271,66 +45729,66 @@ i32.const 68 i32.const 14032 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 - local.get $1 local.get $0 + local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $0 local.get $1 - local.get $3 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 3 i32.const 68 i32.const 14144 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.const 16 i32.add - local.set $3 + local.set $2 i32.const 11188 i32.load - local.set $5 + local.set $3 i32.const 11196 i32.load local.set $6 - loop $for-loop|00 - local.get $0 + loop $for-loop|04 + local.get $1 local.get $6 i32.lt_s if - local.get $3 - local.get $0 + local.get $2 + local.get $1 i32.const 3 i32.shl local.tee $7 i32.add - local.get $5 + local.get $3 local.get $7 i32.add f64.load @@ -46346,11 +45804,11 @@ i64.const 0 end i64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $1 + br $for-loop|04 end end i32.const 10 @@ -46358,35 +45816,35 @@ i32.const 68 i32.const 14256 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $1 + i32.store offset=16 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $0 local.get $4 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + local.get $0 + local.get $5 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $1 + local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> i32.const 10 i32.const 3 i32.const 68 i32.const 14368 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 - local.get $1 - local.get $2 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -46506,6 +45964,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -46522,50 +45981,50 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i64.const 0 i64.store - local.get $3 + local.get $0 i64.const 0 i64.store offset=8 - local.get $3 + local.get $0 i32.const 0 i32.store offset=16 - local.get $3 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $3 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $3 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $2 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $2 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $2 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set @@ -46589,7 +46048,8 @@ global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Float32Array#constructor - local.tee $3 + local.tee $7 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 @@ -46597,13 +46057,13 @@ block $folding-inner0 i32.const 11020 i32.load - local.get $3 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $0 i32.load offset=4 local.set $5 i32.const 11012 @@ -46611,28 +46071,28 @@ local.set $6 i32.const 11020 i32.load - local.set $7 + local.set $8 loop $for-loop|0 - local.get $2 - local.get $7 + local.get $1 + local.get $8 i32.lt_s if - local.get $5 - local.get $2 + local.get $1 i32.const 2 i32.shl - local.tee $8 + local.tee $9 + local.get $5 i32.add local.get $6 - local.get $8 + local.get $9 i32.add i32.load f32.convert_i32_s f32.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -46641,17 +46101,17 @@ i32.const 61 i32.const 14480 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=16 - local.get $3 - local.get $2 + local.get $0 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - local.get $3 + local.get $0 i32.const 11088 i32.const 3 call $~lib/typedarray/Int32Array#set<~lib/array/Array> @@ -46660,63 +46120,63 @@ i32.const 61 i32.const 14592 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=16 - local.get $3 - local.get $2 + local.get $0 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> i32.const 0 - local.set $2 - local.get $1 + local.set $1 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u i32.const 6 i32.add - local.get $3 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $0 i32.load offset=4 i32.const 24 i32.add local.set $5 - local.get $1 + local.get $3 i32.load offset=4 local.set $6 - local.get $1 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|00 + local.set $3 + loop $for-loop|01 local.get $1 - local.get $2 - i32.gt_s + local.get $3 + i32.lt_s if local.get $5 - local.get $2 + local.get $1 i32.const 2 i32.shl i32.add local.get $6 - local.get $2 + local.get $1 i32.const 3 i32.shl i32.add i64.load f32.convert_i64_s f32.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|00 + local.set $1 + br $for-loop|01 end end i32.const 10 @@ -46724,38 +46184,38 @@ i32.const 61 i32.const 14656 call $~lib/rt/__newArray - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=16 + local.get $0 local.get $3 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> i32.const 0 local.set $1 - local.get $0 + local.get $2 i32.load offset=8 - local.get $3 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 - i32.load offset=4 - local.set $2 local.get $0 i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=4 local.set $5 - local.get $0 + local.get $2 i32.load offset=8 - local.set $0 - loop $for-loop|01 - local.get $0 + local.set $2 + loop $for-loop|03 local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -46770,108 +46230,108 @@ i32.const 1 i32.add local.set $1 - br $for-loop|01 + br $for-loop|03 end end i32.const 0 - local.set $0 + local.set $2 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u i32.const 4 i32.add - local.get $3 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $0 i32.load offset=4 i32.const 16 i32.add - local.set $1 + local.set $3 local.get $4 i32.load offset=4 - local.set $2 + local.set $1 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.set $4 - loop $for-loop|02 - local.get $0 + loop $for-loop|05 + local.get $2 local.get $4 i32.lt_s if - local.get $1 - local.get $0 + local.get $3 + local.get $2 i32.const 2 i32.shl i32.add + local.get $1 local.get $2 - local.get $0 i32.const 1 i32.shl i32.add i32.load16_s f32.convert_i32_s f32.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|02 + local.set $2 + br $for-loop|05 end end global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 i32.const 0 - local.set $0 + local.set $2 i32.const 11276 i32.load i32.const 7 i32.add - local.get $3 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $0 i32.load offset=4 i32.const 28 i32.add - local.set $1 + local.set $0 i32.const 11268 i32.load - local.set $4 + local.set $3 i32.const 11276 i32.load - local.set $2 - loop $for-loop|05 - local.get $0 + local.set $4 + loop $for-loop|09 local.get $2 + local.get $4 i32.lt_s if - local.get $1 local.get $0 + local.get $2 i32.const 2 i32.shl i32.add - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add i32.load8_s f32.convert_i32_s f32.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|05 + local.set $2 + br $for-loop|09 end end i32.const 10 @@ -46883,7 +46343,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $3 + local.get $7 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> global.get $~lib/memory/__stack_pointer @@ -47001,6 +46461,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -47017,50 +46478,50 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i64.const 0 i64.store - local.get $3 + local.get $1 i64.const 0 i64.store offset=8 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $2 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $2 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $2 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set @@ -47084,7 +46545,8 @@ global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Float64Array#constructor - local.tee $3 + local.tee $8 + local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 @@ -47092,13 +46554,13 @@ block $folding-inner0 i32.const 11020 i32.load - local.get $3 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $1 i32.load offset=4 local.set $5 i32.const 11012 @@ -47141,7 +46603,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $3 + local.get $1 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer @@ -47153,13 +46615,13 @@ i32.load i32.const 3 i32.add - local.get $3 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $1 i32.load offset=4 i32.const 24 i32.add @@ -47204,39 +46666,39 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $3 + local.get $1 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> i32.const 0 local.set $0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u i32.const 6 i32.add - local.get $3 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $1 i32.load offset=4 i32.const 48 i32.add local.set $5 - local.get $2 + local.get $3 i32.load offset=4 local.set $6 - local.get $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 + local.set $3 loop $for-loop|06 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $5 @@ -47263,74 +46725,74 @@ i32.const 62 i32.const 15056 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=16 + local.get $1 local.get $3 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> i32.const 0 - local.set $2 - local.get $1 + local.set $0 + local.get $2 i32.load offset=8 - local.get $3 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 - i32.load offset=4 - local.set $0 local.get $1 i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=4 local.set $5 - local.get $1 + local.get $2 i32.load offset=8 - local.set $1 + local.set $2 loop $for-loop|08 - local.get $1 + local.get $0 local.get $2 - i32.gt_s + i32.lt_s if + local.get $3 local.get $0 - local.get $2 i32.const 3 i32.shl i32.add - local.get $2 + local.get $0 local.get $5 i32.add i32.load8_u f64.convert_i32_u f64.store - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|08 end end i32.const 0 - local.set $1 + local.set $2 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u i32.const 4 i32.add - local.get $3 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $1 i32.load offset=4 i32.const 32 i32.add - local.set $2 + local.set $3 local.get $4 i32.load offset=4 local.set $0 @@ -47339,78 +46801,78 @@ i32.const 1 i32.shr_u local.set $4 - loop $for-loop|00 - local.get $1 + loop $for-loop|010 + local.get $2 local.get $4 i32.lt_s if + local.get $3 local.get $2 - local.get $1 i32.const 3 i32.shl i32.add local.get $0 - local.get $1 + local.get $2 i32.const 1 i32.shl i32.add i32.load16_s f64.convert_i32_s f64.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|00 + local.set $2 + br $for-loop|010 end end global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 i32.const 0 - local.set $1 + local.set $2 i32.const 11276 i32.load i32.const 7 i32.add - local.get $3 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $1 i32.load offset=4 i32.const 56 i32.add - local.set $2 + local.set $1 i32.const 11268 i32.load - local.set $4 + local.set $3 i32.const 11276 i32.load - local.set $0 - loop $for-loop|012 - local.get $0 - local.get $1 - i32.gt_s + local.set $4 + loop $for-loop|014 + local.get $2 + local.get $4 + i32.lt_s if - local.get $2 local.get $1 + local.get $2 i32.const 3 i32.shl i32.add - local.get $1 - local.get $4 + local.get $2 + local.get $3 i32.add i32.load8_s f64.convert_i32_s f64.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|012 + local.set $2 + br $for-loop|014 end end i32.const 10 @@ -47422,7 +46884,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $3 + local.get $8 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer @@ -47449,9 +46911,9 @@ (local $7 i32) (local $8 i32) (local $9 i64) - (local $10 f32) - (local $11 f64) - (local $12 i32) + (local $10 i32) + (local $11 f32) + (local $12 f64) (local $13 i64) (local $14 f32) (local $15 f64) @@ -47460,2121 +46922,23 @@ i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner32 - block $folding-inner16 - block $folding-inner15 - block $folding-inner31 - block $folding-inner30 - block $folding-inner29 - block $folding-inner28 - block $folding-inner27 - block $folding-inner26 - block $folding-inner25 - block $folding-inner24 - block $folding-inner23 - block $folding-inner22 - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner16 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - memory.size - i32.const 16 - i32.shl - i32.const 33012 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1284 - i32.const 1280 - i32.store - i32.const 1288 - i32.const 1280 - i32.store - i32.const 1280 - global.set $~lib/rt/itcms/pinSpace - i32.const 1316 - i32.const 1312 - i32.store - i32.const 1320 - i32.const 1312 - i32.store - i32.const 1312 - global.set $~lib/rt/itcms/toSpace - i32.const 1460 - i32.const 1456 - i32.store - i32.const 1464 - i32.const 1456 - i32.store - i32.const 1456 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - call $std/typedarray/testInstantiate - i32.const 5 - call $std/typedarray/testInstantiate - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 100 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray - local.tee $0 - i32.store - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 106 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 7 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 3 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 6 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 7 - f64.const 8 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray - local.tee $1 - i32.store - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 32 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $~argumentsLength - local.get $1 - call $~lib/typedarray/Float64Array#sort@varargs - drop - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - if (result i32) - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const -32 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 256 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - if - i32.const 0 - i32.const 1568 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 255 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 137 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1728 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $0 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1808 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $0 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1840 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $0 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 155 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1872 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $0 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 158 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1904 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $0 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 161 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 15 - i32.const 1936 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1968 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $0 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 169 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.load offset=4 - local.set $1 - i32.const 1 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 1 - i32.gt_s - select - local.set $3 - i32.const 3 - local.get $0 - local.get $0 - i32.const 3 - i32.gt_s - select - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.gt_s - if - local.get $1 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const 1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2000 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 181 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.set $0 - i32.const 0 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $1 - local.get $1 - i32.const 0 - i32.gt_s - select - local.set $3 - loop $for-loop|01 - local.get $1 - local.get $3 - i32.gt_s - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|01 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2048 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.set $1 - i32.const 0 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $3 - local.get $0 - i32.const 3 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $0 - loop $for-loop|03 - local.get $0 - local.get $3 - i32.gt_s - if - local.get $1 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const 1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|03 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2096 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 187 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $1 - i32.const 2 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $3 - loop $for-loop|05 - local.get $1 - local.get $3 - i32.gt_s - if - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const 2 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|05 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2144 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 190 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.set $1 - i32.const 1 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 1 - i32.gt_s - select - local.set $3 - i32.const 0 - local.get $0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $0 - loop $for-loop|07 - local.get $0 - local.get $3 - i32.gt_s - if - local.get $1 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|07 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2192 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 193 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $2 - i32.store offset=12 - local.get $2 - i32.load offset=4 - local.set $0 - i32.const 0 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $1 - local.get $1 - i32.const 0 - i32.gt_s - select - local.set $3 - loop $for-loop|09 - local.get $1 - local.get $3 - i32.gt_s - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|09 - end - end - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 197 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=4 - local.get $2 - i32.load - i32.sub - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 198 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 199 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 16 - i32.const 2240 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 200 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2272 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 201 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 5 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.const 6 - call $~lib/typedarray/Int8Array#subarray - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 222 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 223 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 224 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 225 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 228 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 229 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 234 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 237 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $2 - i32.store - local.get $0 - i32.const 0 - i32.const 3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2320 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 248 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 1 - i32.const 3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2368 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 250 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 1 - i32.const 2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2416 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 252 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 2 - i32.const 2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2464 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 254 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2512 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 256 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2560 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 258 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2608 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 260 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2656 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 262 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2704 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 264 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2752 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 266 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2800 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 268 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const -4 - i32.const -3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2848 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 270 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 282 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 283 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 284 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=8 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 287 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 288 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 289 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 290 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 291 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=12 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 294 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 295 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 296 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 297 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=24 - local.get $0 - local.get $2 - i32.eq - if - i32.const 0 - i32.const 1568 - i32.const 300 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 301 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - local.get $2 - i32.load offset=4 - local.get $2 - i32.load - i32.sub - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 302 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - local.get $2 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 303 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner16 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 2896 - i32.store offset=4 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - local.set $1 - loop $for-loop|011 - local.get $1 - local.get $6 - i32.gt_s - if - local.get $2 - local.get $6 - i32.add - i32.load8_s - local.set $0 - i32.const 4 - global.set $~argumentsLength - local.get $5 - local.get $0 - local.get $6 - local.get $4 - i32.const 2896 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|011 - end - end - block $folding-inner20 - block $folding-inner19 - block $folding-inner18 - block $folding-inner17 + block $folding-inner31 + block $folding-inner30 + block $folding-inner29 + block $folding-inner28 + block $folding-inner27 + block $folding-inner26 + block $folding-inner25 + block $folding-inner24 + block $folding-inner23 + block $folding-inner22 + block $folding-inner21 + block $folding-inner20 + block $folding-inner19 + block $folding-inner18 + block $folding-inner17 + block $folding-inner16 + block $folding-inner15 block $folding-inner14 block $folding-inner13 block $folding-inner12 @@ -49589,7 +46953,2105 @@ block $folding-inner3 block $folding-inner2 block $folding-inner1 - local.get $5 + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + i64.const 0 + i64.store offset=24 + memory.size + i32.const 16 + i32.shl + i32.const 33012 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/pinSpace + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store + i32.const 1312 + global.set $~lib/rt/itcms/toSpace + i32.const 1460 + i32.const 1456 + i32.store + i32.const 1464 + i32.const 1456 + i32.store + i32.const 1456 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $std/typedarray/testInstantiate + i32.const 5 + call $std/typedarray/testInstantiate + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 7 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 3 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 5 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 6 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 7 + f64.const 8 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + local.tee $1 + i32.store + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 32 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + local.get $1 + call $~lib/typedarray/Float64Array#sort@varargs + drop + local.get $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + if (result i32) + local.get $1 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const -32 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 256 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + if + i32.const 0 + i32.const 1568 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 255 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1728 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1808 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1840 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.const -2 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1872 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1904 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $1 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 15 + i32.const 1936 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1968 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $5 + i32.store offset=8 + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.load offset=4 + local.set $2 + i32.const 1 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 1 + i32.gt_s + select + local.set $0 + i32.const 3 + local.get $1 + local.get $1 + i32.const 3 + i32.gt_s + select + local.set $1 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 1 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2000 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $5 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=4 + local.set $2 + i32.const 0 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $0 + loop $for-loop|01 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|01 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2048 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $5 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=4 + local.set $2 + i32.const 0 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $0 + local.get $1 + i32.const 3 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $1 + loop $for-loop|03 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 1 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|03 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2096 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $5 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=4 + local.set $2 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + i32.const 2 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + loop $for-loop|05 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 2 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|05 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2144 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $5 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=4 + local.set $2 + i32.const 1 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 1 + i32.gt_s + select + local.set $0 + i32.const 0 + local.get $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $1 + loop $for-loop|07 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|07 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2192 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $5 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $4 + i32.store offset=12 + local.get $4 + i32.load offset=4 + local.set $2 + i32.const 0 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $0 + loop $for-loop|09 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|09 + end + end + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=4 + local.get $4 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 16 + i32.const 2240 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2272 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $5 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 5 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 6 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 224 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 228 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 229 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 236 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $2 + i32.store + local.get $0 + i32.const 0 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2320 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 248 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2368 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2416 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 2 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2464 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 254 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2512 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2560 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2608 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 260 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const -2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2656 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2704 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 264 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2752 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 266 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2800 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const -4 + i32.const -3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2848 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 282 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 283 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 284 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 287 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 288 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 289 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 290 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=12 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 294 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 296 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 297 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=24 + local.get $0 + local.get $2 + i32.eq + if + i32.const 0 + i32.const 1568 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + local.get $2 + i32.load offset=4 + local.get $2 + i32.load + i32.sub + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + local.get $2 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $4 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 2896 + i32.store offset=4 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + local.set $1 + loop $for-loop|011 + local.get $1 + local.get $3 + i32.gt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_s + local.set $0 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $0 + local.get $3 + local.get $4 + i32.const 2896 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $6 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|011 + end + end + local.get $6 i32.const 255 i32.and i32.const 6 @@ -49606,7 +49068,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49632,43 +49094,43 @@ i32.const 2928 i32.store offset=4 i32.const 0 - local.set $5 - i32.const 0 local.set $3 + i32.const 0 + local.set $6 local.get $4 i32.load offset=4 local.set $2 local.get $4 i32.load offset=8 local.set $1 - loop $for-loop|013 + loop $for-loop|010 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $3 + local.get $6 local.get $0 - local.get $5 + local.get $3 local.get $4 i32.const 2928 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|013 + local.set $3 + br $for-loop|010 end end - local.get $3 + local.get $6 i32.const 255 i32.and i32.const 6 @@ -49685,7 +49147,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49711,43 +49173,43 @@ i32.const 2960 i32.store offset=4 i32.const 0 - local.set $5 - i32.const 0 local.set $3 + i32.const 0 + local.set $6 local.get $4 i32.load offset=4 local.set $2 local.get $4 i32.load offset=8 local.set $1 - loop $for-loop|016 + loop $for-loop|013 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $3 + local.get $6 local.get $0 - local.get $5 + local.get $3 local.get $4 i32.const 2960 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|016 + local.set $3 + br $for-loop|013 end end - local.get $3 + local.get $6 i32.const 255 i32.and i32.const 6 @@ -49764,7 +49226,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49790,9 +49252,9 @@ i32.const 2992 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 i32.const 0 - local.set $5 + local.set $6 local.get $4 i32.load offset=4 local.set $2 @@ -49801,13 +49263,13 @@ i32.const 1 i32.shr_u local.set $1 - loop $for-loop|08 + loop $for-loop|014 local.get $1 - local.get $6 + local.get $3 i32.gt_s if local.get $2 - local.get $6 + local.get $3 i32.const 1 i32.shl i32.add @@ -49815,22 +49277,22 @@ local.set $0 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 local.get $6 + local.get $0 + local.get $3 local.get $4 i32.const 2992 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $6 + local.set $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $for-loop|08 + local.set $3 + br $for-loop|014 end end - local.get $5 + local.get $6 i32.const 65535 i32.and i32.const 6 @@ -49847,7 +49309,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49873,9 +49335,9 @@ i32.const 3024 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 i32.const 0 - local.set $5 + local.set $6 local.get $4 i32.load offset=4 local.set $2 @@ -49884,13 +49346,13 @@ i32.const 1 i32.shr_u local.set $1 - loop $for-loop|010 + loop $for-loop|016 local.get $1 - local.get $6 + local.get $3 i32.gt_s if local.get $2 - local.get $6 + local.get $3 i32.const 1 i32.shl i32.add @@ -49898,22 +49360,22 @@ local.set $0 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 local.get $6 + local.get $0 + local.get $3 local.get $4 i32.const 3024 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $6 + local.set $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $for-loop|010 + local.set $3 + br $for-loop|016 end end - local.get $5 + local.get $6 i32.const 65535 i32.and i32.const 6 @@ -49930,7 +49392,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49956,9 +49418,9 @@ i32.const 3056 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 i32.const 0 - local.set $5 + local.set $6 local.get $4 i32.load offset=4 local.set $2 @@ -49967,13 +49429,13 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|012 + loop $for-loop|018 local.get $1 - local.get $6 + local.get $3 i32.gt_s if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.shl i32.add @@ -49981,22 +49443,22 @@ local.set $0 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 local.get $6 + local.get $0 + local.get $3 local.get $4 i32.const 3056 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $6 + local.set $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $for-loop|012 + local.set $3 + br $for-loop|018 end end - local.get $5 + local.get $6 i32.const 6 i32.ne br_if $folding-inner1 @@ -50011,7 +49473,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50037,9 +49499,9 @@ i32.const 3088 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 i32.const 0 - local.set $5 + local.set $6 local.get $4 i32.load offset=4 local.set $2 @@ -50048,13 +49510,13 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|014 + loop $for-loop|021 local.get $1 - local.get $6 + local.get $3 i32.gt_s if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.shl i32.add @@ -50062,22 +49524,22 @@ local.set $0 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 local.get $6 + local.get $0 + local.get $3 local.get $4 i32.const 3088 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $6 + local.set $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $for-loop|014 + local.set $3 + br $for-loop|021 end end - local.get $5 + local.get $6 i32.const 6 i32.ne br_if $folding-inner1 @@ -50092,7 +49554,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50118,7 +49580,7 @@ i32.const 3120 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -50127,13 +49589,13 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|01622 + loop $for-loop|023 local.get $0 - local.get $6 + local.get $3 i32.gt_s if local.get $1 - local.get $6 + local.get $3 i32.const 3 i32.shl i32.add @@ -50143,17 +49605,17 @@ global.set $~argumentsLength local.get $13 local.get $9 - local.get $6 + local.get $3 local.get $2 i32.const 3120 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $for-loop|01622 + local.set $3 + br $for-loop|023 end end local.get $13 @@ -50171,7 +49633,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50197,7 +49659,7 @@ i32.const 3152 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 i64.const 0 local.set $13 local.get $2 @@ -50208,13 +49670,13 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|018 + loop $for-loop|025 local.get $0 - local.get $6 + local.get $3 i32.gt_s if local.get $1 - local.get $6 + local.get $3 i32.const 3 i32.shl i32.add @@ -50224,17 +49686,17 @@ global.set $~argumentsLength local.get $13 local.get $9 - local.get $6 + local.get $3 local.get $2 i32.const 3152 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $for-loop|018 + local.set $3 + br $for-loop|025 end end local.get $13 @@ -50252,7 +49714,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50278,7 +49740,7 @@ i32.const 3184 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -50287,33 +49749,33 @@ i32.const 2 i32.shr_u local.set $0 - loop $for-loop|021 + loop $for-loop|027 local.get $0 - local.get $6 + local.get $3 i32.gt_s if local.get $1 - local.get $6 + local.get $3 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 i32.const 4 global.set $~argumentsLength local.get $14 - local.get $10 - local.get $6 + local.get $11 + local.get $3 local.get $2 i32.const 3184 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $14 - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $for-loop|021 + local.set $3 + br $for-loop|027 end end local.get $14 @@ -50331,7 +49793,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50357,7 +49819,7 @@ i32.const 3216 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -50366,33 +49828,33 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|023 + loop $for-loop|029 local.get $0 - local.get $6 + local.get $3 i32.gt_s if local.get $1 - local.get $6 + local.get $3 i32.const 3 i32.shl i32.add f64.load - local.set $11 + local.set $12 i32.const 4 global.set $~argumentsLength local.get $15 - local.get $11 - local.get $6 + local.get $12 + local.get $3 local.get $2 i32.const 3216 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $15 - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $for-loop|023 + local.set $3 + br $for-loop|029 end end local.get $15 @@ -50410,7 +49872,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50461,7 +49923,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50512,7 +49974,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50563,7 +50025,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50614,7 +50076,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50665,7 +50127,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50716,7 +50178,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50767,7 +50229,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50818,7 +50280,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50869,7 +50331,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50920,7 +50382,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -50971,7 +50433,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50997,7 +50459,7 @@ i32.const 3248 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -51006,7 +50468,7 @@ i32.const 1 i32.sub local.set $4 - loop $for-loop|025 + loop $for-loop|031 local.get $4 i32.const 0 i32.ge_s @@ -51018,22 +50480,22 @@ local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $3 local.get $0 local.get $4 local.get $2 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $3 local.get $4 i32.const 1 i32.sub local.set $4 - br $for-loop|025 + br $for-loop|031 end end - local.get $6 + local.get $3 i32.const 255 i32.and i32.const 6 @@ -51050,7 +50512,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51076,7 +50538,7 @@ i32.const 3280 i32.store offset=4 i32.const 0 - local.set $4 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -51084,35 +50546,35 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $3 - loop $for-loop|039 - local.get $3 + local.set $4 + loop $for-loop|033 + local.get $4 i32.const 0 i32.ge_s if local.get $1 - local.get $3 + local.get $4 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $4 - local.get $0 local.get $3 + local.get $0 + local.get $4 local.get $2 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $3 + local.set $3 + local.get $4 i32.const 1 i32.sub - local.set $3 - br $for-loop|039 + local.set $4 + br $for-loop|033 end end - local.get $4 + local.get $3 i32.const 255 i32.and i32.const 6 @@ -51129,7 +50591,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51155,7 +50617,7 @@ i32.const 3312 i32.store offset=4 i32.const 0 - local.set $4 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -51163,35 +50625,35 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $3 - loop $for-loop|042 - local.get $3 + local.set $4 + loop $for-loop|036 + local.get $4 i32.const 0 i32.ge_s if local.get $1 - local.get $3 + local.get $4 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $4 - local.get $0 local.get $3 + local.get $0 + local.get $4 local.get $2 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $3 + local.set $3 + local.get $4 i32.const 1 i32.sub - local.set $3 - br $for-loop|042 + local.set $4 + br $for-loop|036 end end - local.get $4 + local.get $3 i32.const 255 i32.and i32.const 6 @@ -51208,7 +50670,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51234,7 +50696,7 @@ i32.const 3344 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -51245,7 +50707,7 @@ i32.const 1 i32.sub local.set $4 - loop $for-loop|027 + loop $for-loop|038 local.get $4 i32.const 0 i32.ge_s @@ -51259,22 +50721,22 @@ local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $3 local.get $0 local.get $4 local.get $2 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $3 local.get $4 i32.const 1 i32.sub local.set $4 - br $for-loop|027 + br $for-loop|038 end end - local.get $6 + local.get $3 i32.const 65535 i32.and i32.const 6 @@ -51291,7 +50753,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51317,7 +50779,7 @@ i32.const 3376 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -51328,7 +50790,7 @@ i32.const 1 i32.sub local.set $4 - loop $for-loop|029 + loop $for-loop|040 local.get $4 i32.const 0 i32.ge_s @@ -51342,22 +50804,22 @@ local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $3 local.get $0 local.get $4 local.get $2 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $3 local.get $4 i32.const 1 i32.sub local.set $4 - br $for-loop|029 + br $for-loop|040 end end - local.get $6 + local.get $3 i32.const 65535 i32.and i32.const 6 @@ -51374,7 +50836,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51400,7 +50862,7 @@ i32.const 3408 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -51411,7 +50873,7 @@ i32.const 1 i32.sub local.set $4 - loop $for-loop|031 + loop $for-loop|042 local.get $4 i32.const 0 i32.ge_s @@ -51425,22 +50887,22 @@ local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $3 local.get $0 local.get $4 local.get $2 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $3 local.get $4 i32.const 1 i32.sub local.set $4 - br $for-loop|031 + br $for-loop|042 end end - local.get $6 + local.get $3 i32.const 6 i32.ne br_if $folding-inner5 @@ -51455,7 +50917,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51481,7 +50943,7 @@ i32.const 3440 i32.store offset=4 i32.const 0 - local.set $6 + local.set $3 local.get $2 i32.load offset=4 local.set $1 @@ -51492,7 +50954,7 @@ i32.const 1 i32.sub local.set $4 - loop $for-loop|033 + loop $for-loop|044 local.get $4 i32.const 0 i32.ge_s @@ -51506,22 +50968,22 @@ local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $3 local.get $0 local.get $4 local.get $2 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $3 local.get $4 i32.const 1 i32.sub local.set $4 - br $for-loop|033 + br $for-loop|044 end end - local.get $6 + local.get $3 i32.const 6 i32.ne br_if $folding-inner5 @@ -51536,7 +50998,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51573,7 +51035,7 @@ i32.const 1 i32.sub local.set $4 - loop $for-loop|035 + loop $for-loop|046 local.get $4 i32.const 0 i32.ge_s @@ -51599,7 +51061,7 @@ i32.const 1 i32.sub local.set $4 - br $for-loop|035 + br $for-loop|046 end end local.get $13 @@ -51617,7 +51079,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51654,7 +51116,7 @@ i32.const 1 i32.sub local.set $4 - loop $for-loop|037 + loop $for-loop|048 local.get $4 i32.const 0 i32.ge_s @@ -51680,7 +51142,7 @@ i32.const 1 i32.sub local.set $4 - br $for-loop|037 + br $for-loop|048 end end local.get $13 @@ -51698,7 +51160,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51735,7 +51197,7 @@ i32.const 1 i32.sub local.set $4 - loop $for-loop|03950 + loop $for-loop|050 local.get $4 i32.const 0 i32.ge_s @@ -51746,11 +51208,11 @@ i32.shl i32.add f32.load - local.set $10 + local.set $11 i32.const 4 global.set $~argumentsLength local.get $14 - local.get $10 + local.get $11 local.get $4 local.get $1 i32.const 3536 @@ -51761,7 +51223,7 @@ i32.const 1 i32.sub local.set $4 - br $for-loop|03950 + br $for-loop|050 end end local.get $14 @@ -51779,7 +51241,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51816,7 +51278,7 @@ i32.const 1 i32.sub local.set $4 - loop $for-loop|041 + loop $for-loop|052 local.get $4 i32.const 0 i32.ge_s @@ -51827,11 +51289,11 @@ i32.shl i32.add f64.load - local.set $11 + local.set $12 i32.const 4 global.set $~argumentsLength local.get $15 - local.get $11 + local.get $12 local.get $4 local.get $1 i32.const 3568 @@ -51842,7 +51304,7 @@ i32.const 1 i32.sub local.set $4 - br $for-loop|041 + br $for-loop|052 end end local.get $15 @@ -51860,7 +51322,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51871,72 +51333,72 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $6 + local.tee $3 i32.store - local.get $6 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $6 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $6 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 3600 i32.store offset=4 - local.get $2 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $6 + local.get $3 i32.load offset=4 - local.set $1 - local.get $6 + local.set $2 + local.get $3 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $6 i32.store offset=4 loop $for-loop|02 - local.get $4 + local.get $5 local.get $7 i32.gt_s if - local.get $1 + local.get $2 local.get $7 i32.add i32.load8_s - local.set $0 + local.set $1 i32.const 3 global.set $~argumentsLength - local.get $3 + local.get $6 local.get $7 i32.add - local.get $0 + local.get $1 local.get $7 - local.get $6 + local.get $3 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -51948,43 +51410,43 @@ br $for-loop|02 end end - local.get $5 - local.get $3 + local.get $0 + local.get $6 i32.store - local.get $5 - local.get $3 + local.get $0 + local.get $6 call $~lib/rt/itcms/__link - local.get $5 - local.get $3 + local.get $0 + local.get $6 i32.store offset=4 + local.get $0 local.get $5 - local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $5 + local.get $4 + local.get $0 i32.store offset=8 - local.get $5 + local.get $0 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner18 - local.get $5 + br_if $folding-inner20 + local.get $0 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 i32.ne - br_if $folding-inner19 - local.get $5 + br_if $folding-inner21 + local.get $0 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 9 i32.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -51998,7 +51460,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52009,72 +51471,72 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $6 + local.tee $3 i32.store - local.get $6 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $6 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $6 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 3632 i32.store offset=4 - local.get $2 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $6 + local.get $3 i32.load offset=4 - local.set $1 - local.get $6 + local.set $2 + local.get $3 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $6 i32.store offset=4 loop $for-loop|04 - local.get $4 + local.get $5 local.get $7 i32.gt_s if - local.get $1 + local.get $2 local.get $7 i32.add i32.load8_u - local.set $0 + local.set $1 i32.const 3 global.set $~argumentsLength - local.get $3 + local.get $6 local.get $7 i32.add - local.get $0 + local.get $1 local.get $7 - local.get $6 + local.get $3 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -52086,43 +51548,43 @@ br $for-loop|04 end end - local.get $5 - local.get $3 + local.get $0 + local.get $6 i32.store - local.get $5 - local.get $3 + local.get $0 + local.get $6 call $~lib/rt/itcms/__link - local.get $5 - local.get $3 + local.get $0 + local.get $6 i32.store offset=4 + local.get $0 local.get $5 - local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $5 + local.get $4 + local.get $0 i32.store offset=8 - local.get $5 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner18 - local.get $5 + br_if $folding-inner20 + local.get $0 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 i32.ne - br_if $folding-inner19 - local.get $5 + br_if $folding-inner21 + local.get $0 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 9 i32.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -52136,7 +51598,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52147,72 +51609,72 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $6 + local.tee $3 i32.store - local.get $6 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $6 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $6 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 3664 i32.store offset=4 - local.get $2 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $6 + local.get $3 i32.load offset=4 - local.set $1 - local.get $6 + local.set $2 + local.get $3 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $6 i32.store offset=4 loop $for-loop|06 - local.get $4 + local.get $5 local.get $7 i32.gt_s if - local.get $1 + local.get $2 local.get $7 i32.add i32.load8_u - local.set $0 + local.set $1 i32.const 3 global.set $~argumentsLength - local.get $3 + local.get $6 local.get $7 i32.add - local.get $0 + local.get $1 local.get $7 - local.get $6 + local.get $3 i32.const 3664 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -52224,47 +51686,49 @@ br $for-loop|06 end end - local.get $5 - local.get $3 + local.get $0 + local.get $6 i32.store - local.get $5 - local.get $3 + local.get $0 + local.get $6 call $~lib/rt/itcms/__link - local.get $5 - local.get $3 + local.get $0 + local.get $6 i32.store offset=4 + local.get $0 local.get $5 - local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $5 + local.get $4 + local.get $0 i32.store offset=8 - local.get $5 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner18 - local.get $5 + br_if $folding-inner20 + local.get $0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 i32.ne - br_if $folding-inner19 - local.get $5 + br_if $folding-inner21 + local.get $0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 9 i32.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -52272,7 +51736,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52308,7 +51772,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52320,29 +51784,29 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.set $3 + local.set $5 local.get $0 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $10 i32.store global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $5 i32.const 1 i32.shl local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store offset=4 - loop $for-loop|015 - local.get $3 - local.get $12 + loop $for-loop|08 + local.get $5 + local.get $7 i32.gt_s if local.get $4 - local.get $12 + local.get $7 i32.const 1 i32.shl local.tee $1 @@ -52352,32 +51816,32 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $5 + local.get $3 i32.add local.get $0 - local.get $12 + local.get $7 local.get $8 i32.const 3696 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $12 + local.get $7 i32.const 1 i32.add - local.set $12 - br $for-loop|015 + local.set $7 + br $for-loop|08 end end - local.get $7 - local.get $5 + local.get $10 + local.get $3 i32.store - local.get $7 - local.get $5 + local.get $10 + local.get $3 call $~lib/rt/itcms/__link - local.get $7 - local.get $5 + local.get $10 + local.get $3 i32.store offset=4 - local.get $7 + local.get $10 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -52385,32 +51849,32 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $6 - local.get $7 + local.get $10 i32.store offset=8 - local.get $7 + local.get $10 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner18 - local.get $7 + br_if $folding-inner20 + local.get $10 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 i32.ne - br_if $folding-inner19 - local.get $7 + br_if $folding-inner21 + local.get $10 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 9 i32.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -52418,7 +51882,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52454,7 +51918,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52466,29 +51930,29 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.set $3 + local.set $5 local.get $0 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $10 i32.store global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $5 i32.const 1 i32.shl local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store offset=4 - loop $for-loop|017 - local.get $3 - local.get $12 + loop $for-loop|012 + local.get $5 + local.get $7 i32.gt_s if local.get $4 - local.get $12 + local.get $7 i32.const 1 i32.shl local.tee $1 @@ -52498,32 +51962,32 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $5 + local.get $3 i32.add local.get $0 - local.get $12 + local.get $7 local.get $8 i32.const 3728 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $12 + local.get $7 i32.const 1 i32.add - local.set $12 - br $for-loop|017 + local.set $7 + br $for-loop|012 end end - local.get $7 - local.get $5 + local.get $10 + local.get $3 i32.store - local.get $7 - local.get $5 + local.get $10 + local.get $3 call $~lib/rt/itcms/__link - local.get $7 - local.get $5 + local.get $10 + local.get $3 i32.store offset=4 - local.get $7 + local.get $10 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -52531,32 +51995,32 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $6 - local.get $7 + local.get $10 i32.store offset=8 - local.get $7 + local.get $10 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner18 - local.get $7 + br_if $folding-inner20 + local.get $10 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 i32.ne - br_if $folding-inner19 - local.get $7 + br_if $folding-inner21 + local.get $10 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 9 i32.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -52564,7 +52028,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52600,7 +52064,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52612,29 +52076,29 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $3 + local.set $5 local.get $0 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $10 i32.store global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $5 i32.const 2 i32.shl local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store offset=4 - loop $for-loop|019 - local.get $3 - local.get $12 + loop $for-loop|015 + local.get $5 + local.get $7 i32.gt_s if local.get $4 - local.get $12 + local.get $7 i32.const 2 i32.shl local.tee $1 @@ -52644,32 +52108,32 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $5 + local.get $3 i32.add local.get $0 - local.get $12 + local.get $7 local.get $8 i32.const 3760 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $12 + local.get $7 i32.const 1 i32.add - local.set $12 - br $for-loop|019 + local.set $7 + br $for-loop|015 end end - local.get $7 - local.get $5 + local.get $10 + local.get $3 i32.store - local.get $7 - local.get $5 + local.get $10 + local.get $3 call $~lib/rt/itcms/__link - local.get $7 - local.get $5 + local.get $10 + local.get $3 i32.store offset=4 - local.get $7 + local.get $10 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -52677,32 +52141,32 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $6 - local.get $7 + local.get $10 i32.store offset=8 - local.get $7 + local.get $10 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner18 - local.get $7 + br_if $folding-inner20 + local.get $10 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 i32.ne - br_if $folding-inner19 - local.get $7 + br_if $folding-inner21 + local.get $10 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 9 i32.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -52710,7 +52174,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52746,7 +52210,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52758,29 +52222,29 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $3 + local.set $5 local.get $0 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $10 i32.store global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $5 i32.const 2 i32.shl local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store offset=4 - loop $for-loop|022 - local.get $3 - local.get $12 + loop $for-loop|017 + local.get $5 + local.get $7 i32.gt_s if local.get $4 - local.get $12 + local.get $7 i32.const 2 i32.shl local.tee $1 @@ -52790,32 +52254,32 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $5 + local.get $3 i32.add local.get $0 - local.get $12 + local.get $7 local.get $8 i32.const 3792 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $12 + local.get $7 i32.const 1 i32.add - local.set $12 - br $for-loop|022 + local.set $7 + br $for-loop|017 end end - local.get $7 - local.get $5 + local.get $10 + local.get $3 i32.store - local.get $7 - local.get $5 + local.get $10 + local.get $3 call $~lib/rt/itcms/__link - local.get $7 - local.get $5 + local.get $10 + local.get $3 i32.store offset=4 - local.get $7 + local.get $10 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -52823,32 +52287,32 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $6 - local.get $7 + local.get $10 i32.store offset=8 - local.get $7 + local.get $10 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner18 - local.get $7 + br_if $folding-inner20 + local.get $10 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 i32.ne - br_if $folding-inner19 - local.get $7 + br_if $folding-inner21 + local.get $10 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 9 i32.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -52856,7 +52320,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52867,40 +52331,40 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $5 + local.tee $7 i32.store - local.get $5 + local.get $7 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $7 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $7 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i32.const 3824 i32.store offset=4 - local.get $3 + local.get $5 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $5 + local.get $7 i32.load offset=4 local.set $2 - local.get $5 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u @@ -52920,13 +52384,13 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - loop $for-loop|024 + loop $for-loop|019 + local.get $3 local.get $4 - local.get $7 - i32.gt_s + i32.lt_s if local.get $2 - local.get $7 + local.get $3 i32.const 3 i32.shl local.tee $0 @@ -52939,17 +52403,17 @@ local.get $6 i32.add local.get $9 + local.get $3 local.get $7 - local.get $5 i32.const 3824 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 - br $for-loop|024 + local.set $3 + br $for-loop|019 end end local.get $8 @@ -52968,7 +52432,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 local.get $8 i32.store offset=8 local.get $8 @@ -52976,25 +52440,25 @@ call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner18 + br_if $folding-inner20 local.get $8 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 i64.ne - br_if $folding-inner19 + br_if $folding-inner21 local.get $8 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 9 i64.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -53002,7 +52466,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53013,40 +52477,40 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $5 + local.tee $7 i32.store - local.get $5 + local.get $7 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $5 + local.get $7 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $5 + local.get $7 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i32.const 3856 i32.store offset=4 - local.get $3 + local.get $5 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $5 + local.get $7 i32.load offset=4 local.set $2 - local.get $5 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u @@ -53066,13 +52530,13 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - loop $for-loop|026 + loop $for-loop|022 + local.get $3 local.get $4 - local.get $7 - i32.gt_s + i32.lt_s if local.get $2 - local.get $7 + local.get $3 i32.const 3 i32.shl local.tee $0 @@ -53085,17 +52549,17 @@ local.get $6 i32.add local.get $9 + local.get $3 local.get $7 - local.get $5 i32.const 3856 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 - br $for-loop|026 + local.set $3 + br $for-loop|022 end end local.get $8 @@ -53114,7 +52578,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 local.get $8 i32.store offset=8 local.get $8 @@ -53122,25 +52586,25 @@ call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner18 + br_if $folding-inner20 local.get $8 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 i64.ne - br_if $folding-inner19 + br_if $folding-inner21 local.get $8 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 9 i64.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -53148,7 +52612,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53159,40 +52623,40 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $5 + local.tee $7 i32.store - local.get $5 + local.get $7 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $5 + local.get $7 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $5 + local.get $7 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i32.const 3888 i32.store offset=4 - local.get $3 + local.get $5 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $5 + local.get $7 i32.load offset=4 local.set $2 - local.get $5 + local.get $7 i32.load offset=8 i32.const 2 i32.shr_u @@ -53212,36 +52676,36 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - loop $for-loop|028 + loop $for-loop|024 + local.get $3 local.get $4 - local.get $7 - i32.gt_s + i32.lt_s if local.get $2 - local.get $7 + local.get $3 i32.const 2 i32.shl local.tee $0 i32.add f32.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength local.get $0 local.get $6 i32.add - local.get $10 + local.get $11 + local.get $3 local.get $7 - local.get $5 i32.const 3888 i32.load call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 - br $for-loop|028 + local.set $3 + br $for-loop|024 end end local.get $8 @@ -53260,7 +52724,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 local.get $8 i32.store offset=8 local.get $8 @@ -53268,25 +52732,25 @@ call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner18 + br_if $folding-inner20 local.get $8 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 f32.ne - br_if $folding-inner19 + br_if $folding-inner21 local.get $8 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 9 f32.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -53294,7 +52758,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53305,40 +52769,40 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $5 + local.tee $7 i32.store - local.get $5 + local.get $7 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $5 + local.get $7 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $5 + local.get $7 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i32.const 3920 i32.store offset=4 - local.get $3 + local.get $5 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $5 + local.get $7 i32.load offset=4 local.set $2 - local.get $5 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u @@ -53358,36 +52822,36 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - loop $for-loop|030 + loop $for-loop|026 + local.get $3 local.get $4 - local.get $7 - i32.gt_s + i32.lt_s if local.get $2 - local.get $7 + local.get $3 i32.const 3 i32.shl local.tee $0 i32.add f64.load - local.set $11 + local.set $12 i32.const 3 global.set $~argumentsLength local.get $0 local.get $6 i32.add - local.get $11 + local.get $12 + local.get $3 local.get $7 - local.get $5 i32.const 3920 i32.load call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 - br $for-loop|030 + local.set $3 + br $for-loop|026 end end local.get $8 @@ -53406,7 +52870,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 local.get $8 i32.store offset=8 local.get $8 @@ -53414,19 +52878,19 @@ call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner18 + br_if $folding-inner20 local.get $8 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.ne - br_if $folding-inner19 + br_if $folding-inner21 local.get $8 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 9 f64.ne - br_if $folding-inner20 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -53449,7 +52913,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53457,17 +52921,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set @@ -53475,21 +52939,21 @@ i32.const 4304 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|053 + loop $for-loop|045 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_s local.set $0 @@ -53497,18 +52961,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|053 + local.set $3 + br $for-loop|045 end end i32.const 0 @@ -53519,21 +52983,21 @@ i32.const 4336 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.055 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.047 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|056 + loop $for-loop|049 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_s local.set $0 @@ -53541,18 +53005,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4336 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.055 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.047 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|056 + local.set $3 + br $for-loop|049 end end i32.const 0 @@ -53569,7 +53033,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53577,17 +53041,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set @@ -53595,21 +53059,21 @@ i32.const 4368 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|058 + loop $for-loop|051 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 @@ -53617,18 +53081,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4368 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|058 + local.set $3 + br $for-loop|051 end end i32.const 0 @@ -53639,21 +53103,21 @@ i32.const 4400 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.053 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|061 + loop $for-loop|054 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 @@ -53661,18 +53125,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4400 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.053 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|061 + local.set $3 + br $for-loop|054 end end i32.const 0 @@ -53689,7 +53153,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53697,17 +53161,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set @@ -53715,21 +53179,21 @@ i32.const 4432 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.064 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.057 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|065 + loop $for-loop|058 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 @@ -53737,18 +53201,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4432 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.064 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.057 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|065 + local.set $3 + br $for-loop|058 end end i32.const 0 @@ -53759,21 +53223,21 @@ i32.const 4464 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.067 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|068 + loop $for-loop|061 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 @@ -53781,18 +53245,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4464 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.067 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|068 + local.set $3 + br $for-loop|061 end end i32.const 0 @@ -53809,7 +53273,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53817,17 +53281,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set @@ -53835,23 +53299,23 @@ i32.const 4496 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|070 + loop $for-loop|063 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl i32.add @@ -53861,18 +53325,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4496 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|070 + local.set $3 + br $for-loop|063 end end i32.const 0 @@ -53883,23 +53347,23 @@ i32.const 4528 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.072 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.065 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|073 + loop $for-loop|066 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl i32.add @@ -53909,18 +53373,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4528 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.072 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.065 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|073 + local.set $3 + br $for-loop|066 end end i32.const 0 @@ -53937,7 +53401,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53945,17 +53409,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set @@ -53963,23 +53427,23 @@ i32.const 4560 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|075 + loop $for-loop|068 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl i32.add @@ -53989,18 +53453,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4560 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|075 + local.set $3 + br $for-loop|068 end end i32.const 0 @@ -54011,23 +53475,23 @@ i32.const 4592 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.077 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.070 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|078 + loop $for-loop|071 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl i32.add @@ -54037,18 +53501,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4592 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.077 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.070 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|078 + local.set $3 + br $for-loop|071 end end i32.const 0 @@ -54065,7 +53529,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -54073,17 +53537,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set @@ -54091,23 +53555,23 @@ i32.const 4624 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|080 + loop $for-loop|073 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -54117,18 +53581,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4624 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|080 + local.set $3 + br $for-loop|073 end end i32.const 0 @@ -54139,23 +53603,23 @@ i32.const 4656 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.082 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.075 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|083 + loop $for-loop|076 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -54165,18 +53629,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4656 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.082 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.075 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|083 + local.set $3 + br $for-loop|076 end end i32.const 0 @@ -54193,7 +53657,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -54201,17 +53665,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set @@ -54219,23 +53683,23 @@ i32.const 4688 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|085 + loop $for-loop|078 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -54245,18 +53709,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4688 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|085 + local.set $3 + br $for-loop|078 end end i32.const 0 @@ -54267,23 +53731,23 @@ i32.const 4720 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.087 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.080 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|088 + loop $for-loop|081 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -54293,18 +53757,18 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 4720 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.087 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.080 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|088 + local.set $3 + br $for-loop|081 end end i32.const 0 @@ -54321,7 +53785,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -54357,7 +53821,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|090 + loop $for-loop|083 local.get $0 local.get $3 i32.gt_s @@ -54384,7 +53848,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|090 + br $for-loop|083 end end i32.const 0 @@ -54396,7 +53860,7 @@ i32.store offset=4 i32.const 0 local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.092 (result i32) + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.085 (result i32) local.get $4 i32.load offset=4 local.set $1 @@ -54405,7 +53869,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|093 + loop $for-loop|086 local.get $0 local.get $3 i32.gt_s @@ -54426,13 +53890,13 @@ i32.const 4784 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.092 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.085 drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|093 + br $for-loop|086 end end i32.const 0 @@ -54449,7 +53913,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -54485,7 +53949,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|095 + loop $for-loop|088 local.get $0 local.get $3 i32.gt_s @@ -54512,7 +53976,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|095 + br $for-loop|088 end end i32.const 0 @@ -54524,7 +53988,7 @@ i32.store offset=4 i32.const 0 local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.097 (result i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.090 (result i32) local.get $4 i32.load offset=4 local.set $1 @@ -54533,7 +53997,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|098 + loop $for-loop|091 local.get $0 local.get $3 i32.gt_s @@ -54554,13 +54018,13 @@ i32.const 4848 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.097 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.090 drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|098 + br $for-loop|091 end end i32.const 0 @@ -54577,7 +54041,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -54613,7 +54077,7 @@ i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0100 + loop $for-loop|093 local.get $0 local.get $3 i32.gt_s @@ -54624,11 +54088,11 @@ i32.shl i32.add f32.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $10 + local.get $11 local.get $3 local.get $4 i32.const 4880 @@ -54640,7 +54104,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|0100 + br $for-loop|093 end end i32.const 0 @@ -54652,7 +54116,7 @@ i32.store offset=4 i32.const 0 local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0102 (result i32) + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.095 (result i32) local.get $4 i32.load offset=4 local.set $1 @@ -54661,7 +54125,7 @@ i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0103 + loop $for-loop|096 local.get $0 local.get $3 i32.gt_s @@ -54672,23 +54136,23 @@ i32.shl i32.add f32.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $10 + local.get $11 local.get $3 local.get $4 i32.const 4912 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0102 + br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.095 drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|0103 + br $for-loop|096 end end i32.const 0 @@ -54705,7 +54169,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -54741,7 +54205,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0105 + loop $for-loop|098 local.get $0 local.get $3 i32.gt_s @@ -54752,11 +54216,11 @@ i32.shl i32.add f64.load - local.set $11 + local.set $12 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $11 + local.get $12 local.get $3 local.get $4 i32.const 4944 @@ -54768,7 +54232,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|0105 + br $for-loop|098 end end i32.const 0 @@ -54780,7 +54244,7 @@ i32.store offset=4 i32.const 0 local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0107 (result i32) + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0100 (result i32) local.get $4 i32.load offset=4 local.set $1 @@ -54789,7 +54253,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0108 + loop $for-loop|0101 local.get $0 local.get $3 i32.gt_s @@ -54800,23 +54264,23 @@ i32.shl i32.add f64.load - local.set $11 + local.set $12 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $11 + local.get $12 local.get $3 local.get $4 i32.const 4976 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0107 + br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0100 drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|0108 + br $for-loop|0101 end end i32.const 0 @@ -54833,7 +54297,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -54841,17 +54305,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set @@ -54860,14 +54324,14 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0110 + loop $for-loop|0103 local.get $1 local.get $2 i32.lt_s @@ -54879,7 +54343,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5008 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -54888,7 +54352,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0110 + br $for-loop|0103 end end i32.const -1 @@ -54903,14 +54367,14 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0112 - loop $for-loop|0113 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0105 + loop $for-loop|0106 local.get $1 local.get $2 i32.lt_s @@ -54922,16 +54386,16 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5040 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0112 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0105 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0113 + br $for-loop|0106 end end i32.const -1 @@ -54952,7 +54416,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -54960,17 +54424,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -54979,14 +54443,14 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0115 + loop $for-loop|0108 local.get $1 local.get $2 i32.lt_s @@ -54998,7 +54462,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5072 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -55007,7 +54471,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0115 + br $for-loop|0108 end end i32.const -1 @@ -55022,14 +54486,14 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 - loop $for-loop|0118 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0110 + loop $for-loop|0111 local.get $1 local.get $2 i32.lt_s @@ -55041,16 +54505,16 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5104 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0110 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0118 + br $for-loop|0111 end end i32.const -1 @@ -55071,7 +54535,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55079,17 +54543,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -55098,14 +54562,14 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0121 - loop $for-loop|0122 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0114 + loop $for-loop|0115 local.get $1 local.get $2 i32.lt_s @@ -55117,16 +54581,16 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5136 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0121 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0114 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0122 + br $for-loop|0115 end end i32.const -1 @@ -55141,14 +54605,14 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0124 - loop $for-loop|0125 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 + loop $for-loop|0118 local.get $1 local.get $2 i32.lt_s @@ -55160,16 +54624,16 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5168 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0124 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0125 + br $for-loop|0118 end end i32.const -1 @@ -55190,7 +54654,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55198,17 +54662,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set @@ -55217,16 +54681,16 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0127 + loop $for-loop|0120 local.get $1 local.get $2 i32.lt_s @@ -55240,7 +54704,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5200 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -55249,7 +54713,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0127 + br $for-loop|0120 end end i32.const -1 @@ -55264,16 +54728,16 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0129 - loop $for-loop|0130 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0122 + loop $for-loop|0123 local.get $1 local.get $2 i32.lt_s @@ -55287,16 +54751,16 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5232 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0129 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0122 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0130 + br $for-loop|0123 end end i32.const -1 @@ -55317,7 +54781,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55325,17 +54789,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set @@ -55344,16 +54808,16 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0132 + loop $for-loop|0125 local.get $1 local.get $2 i32.lt_s @@ -55367,7 +54831,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5264 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -55376,7 +54840,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0132 + br $for-loop|0125 end end i32.const -1 @@ -55391,16 +54855,16 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0134 - loop $for-loop|0135 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0127 + loop $for-loop|0128 local.get $1 local.get $2 i32.lt_s @@ -55414,16 +54878,16 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5296 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0134 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0127 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0135 + br $for-loop|0128 end end i32.const -1 @@ -55444,7 +54908,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55452,17 +54916,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set @@ -55471,16 +54935,16 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0137 + loop $for-loop|0130 local.get $1 local.get $2 i32.lt_s @@ -55494,7 +54958,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5328 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -55503,7 +54967,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0137 + br $for-loop|0130 end end i32.const -1 @@ -55518,16 +54982,16 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0139 - loop $for-loop|0140 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0132 + loop $for-loop|0133 local.get $1 local.get $2 i32.lt_s @@ -55541,16 +55005,16 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5360 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0139 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0132 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0140 + br $for-loop|0133 end end i32.const -1 @@ -55571,7 +55035,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55579,17 +55043,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set @@ -55598,16 +55062,16 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|0142 + loop $for-loop|0135 local.get $1 local.get $2 i32.lt_s @@ -55621,7 +55085,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5392 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -55630,7 +55094,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0142 + br $for-loop|0135 end end i32.const -1 @@ -55645,16 +55109,16 @@ i32.store offset=4 i32.const 0 local.set $1 - local.get $3 + local.get $5 i32.load offset=4 local.set $4 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0144 - loop $for-loop|0145 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0137 + loop $for-loop|0138 local.get $1 local.get $2 i32.lt_s @@ -55668,16 +55132,16 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $3 + local.get $5 i32.const 5424 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0144 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0137 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0145 + br $for-loop|0138 end end i32.const -1 @@ -55698,7 +55162,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55734,7 +55198,7 @@ i32.shr_u local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0147 + loop $for-loop|0140 local.get $0 local.get $1 i32.gt_s @@ -55757,7 +55221,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0147 + br $for-loop|0140 end end i32.const -1 @@ -55780,8 +55244,8 @@ i32.const 3 i32.shr_u local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0149 - loop $for-loop|0150 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0142 + loop $for-loop|0143 local.get $0 local.get $1 i32.gt_s @@ -55799,12 +55263,12 @@ i32.const 5488 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0149 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0142 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0150 + br $for-loop|0143 end end i32.const -1 @@ -55825,7 +55289,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55861,7 +55325,7 @@ i32.shr_u local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0152 + loop $for-loop|0145 local.get $0 local.get $1 i32.gt_s @@ -55884,7 +55348,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0152 + br $for-loop|0145 end end i32.const -1 @@ -55907,8 +55371,8 @@ i32.const 3 i32.shr_u local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0154 - loop $for-loop|0155 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0147 + loop $for-loop|0148 local.get $0 local.get $1 i32.gt_s @@ -55926,12 +55390,12 @@ i32.const 5552 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0154 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0147 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0155 + br $for-loop|0148 end end i32.const -1 @@ -55952,7 +55416,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55988,7 +55452,7 @@ i32.shr_u local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0157 + loop $for-loop|0150 local.get $0 local.get $1 i32.gt_s @@ -56011,7 +55475,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0157 + br $for-loop|0150 end end i32.const -1 @@ -56034,8 +55498,8 @@ i32.const 2 i32.shr_u local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0159 - loop $for-loop|0160 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0152 + loop $for-loop|0153 local.get $0 local.get $1 i32.gt_s @@ -56053,12 +55517,12 @@ i32.const 5616 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0159 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0152 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0160 + br $for-loop|0153 end end i32.const -1 @@ -56079,7 +55543,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56115,7 +55579,7 @@ i32.shr_u local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0162 + loop $for-loop|0155 local.get $0 local.get $1 i32.gt_s @@ -56138,7 +55602,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0162 + br $for-loop|0155 end end i32.const -1 @@ -56161,8 +55625,8 @@ i32.const 3 i32.shr_u local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0164 - loop $for-loop|0165 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0157 + loop $for-loop|0158 local.get $0 local.get $1 i32.gt_s @@ -56180,12 +55644,12 @@ i32.const 5680 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0164 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0157 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0165 + br $for-loop|0158 end end i32.const -1 @@ -56206,7 +55670,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56240,7 +55704,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0167 + loop $for-loop|0160 local.get $1 i32.const 0 i32.ge_s @@ -56261,7 +55725,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0167 + br $for-loop|0160 end end i32.const -1 @@ -56282,8 +55746,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0169 - loop $for-loop|0170 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0162 + loop $for-loop|0163 local.get $1 i32.const 0 i32.ge_s @@ -56299,12 +55763,12 @@ i32.const 5744 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0169 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0162 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0170 + br $for-loop|0163 end end i32.const -1 @@ -56325,7 +55789,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56359,7 +55823,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0172 + loop $for-loop|0165 local.get $1 i32.const 0 i32.ge_s @@ -56380,7 +55844,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0172 + br $for-loop|0165 end end i32.const -1 @@ -56401,8 +55865,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0174 - loop $for-loop|0175 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0167 + loop $for-loop|0168 local.get $1 i32.const 0 i32.ge_s @@ -56418,12 +55882,12 @@ i32.const 5808 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0174 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0167 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0175 + br $for-loop|0168 end end i32.const -1 @@ -56444,7 +55908,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56477,8 +55941,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0178 - loop $for-loop|0179 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0171 + loop $for-loop|0172 local.get $1 i32.const 0 i32.ge_s @@ -56494,12 +55958,12 @@ i32.const 5840 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0178 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0171 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0179 + br $for-loop|0172 end end i32.const -1 @@ -56520,8 +55984,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0181 - loop $for-loop|0182 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0174 + loop $for-loop|0175 local.get $1 i32.const 0 i32.ge_s @@ -56537,12 +56001,12 @@ i32.const 5872 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0181 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0174 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0182 + br $for-loop|0175 end end i32.const -1 @@ -56563,7 +56027,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56599,7 +56063,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0184 + loop $for-loop|0177 local.get $1 i32.const 0 i32.ge_s @@ -56622,7 +56086,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0184 + br $for-loop|0177 end end i32.const -1 @@ -56645,8 +56109,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0186 - loop $for-loop|0187 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0179 + loop $for-loop|0180 local.get $1 i32.const 0 i32.ge_s @@ -56664,12 +56128,12 @@ i32.const 5936 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0186 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0179 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0187 + br $for-loop|0180 end end i32.const -1 @@ -56690,7 +56154,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56726,7 +56190,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0189 + loop $for-loop|0182 local.get $1 i32.const 0 i32.ge_s @@ -56749,7 +56213,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0189 + br $for-loop|0182 end end i32.const -1 @@ -56772,8 +56236,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0191 - loop $for-loop|0192 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0184 + loop $for-loop|0185 local.get $1 i32.const 0 i32.ge_s @@ -56791,12 +56255,12 @@ i32.const 6000 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0191 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0184 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0192 + br $for-loop|0185 end end i32.const -1 @@ -56817,7 +56281,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56853,7 +56317,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0194 + loop $for-loop|0187 local.get $1 i32.const 0 i32.ge_s @@ -56876,7 +56340,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0194 + br $for-loop|0187 end end i32.const -1 @@ -56899,8 +56363,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0196 - loop $for-loop|0197 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0189 + loop $for-loop|0190 local.get $1 i32.const 0 i32.ge_s @@ -56918,12 +56382,12 @@ i32.const 6064 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0196 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0189 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0197 + br $for-loop|0190 end end i32.const -1 @@ -56944,7 +56408,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56980,7 +56444,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|0199 + loop $for-loop|0192 local.get $1 i32.const 0 i32.ge_s @@ -57003,7 +56467,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0199 + br $for-loop|0192 end end i32.const -1 @@ -57026,8 +56490,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0201 - loop $for-loop|0202 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0194 + loop $for-loop|0195 local.get $1 i32.const 0 i32.ge_s @@ -57045,12 +56509,12 @@ i32.const 6128 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0201 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0194 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0202 + br $for-loop|0195 end end i32.const -1 @@ -57071,7 +56535,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57107,7 +56571,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0204 + loop $for-loop|0197 local.get $1 i32.const 0 i32.ge_s @@ -57130,7 +56594,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0204 + br $for-loop|0197 end end i32.const -1 @@ -57153,8 +56617,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0206 - loop $for-loop|0207 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0199 + loop $for-loop|0200 local.get $1 i32.const 0 i32.ge_s @@ -57172,12 +56636,12 @@ i32.const 6192 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0206 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0199 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0207 + br $for-loop|0200 end end i32.const -1 @@ -57198,7 +56662,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57234,7 +56698,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0209 + loop $for-loop|0202 local.get $1 i32.const 0 i32.ge_s @@ -57257,7 +56721,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0209 + br $for-loop|0202 end end i32.const -1 @@ -57280,8 +56744,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0211 - loop $for-loop|0212 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0204 + loop $for-loop|0205 local.get $1 i32.const 0 i32.ge_s @@ -57299,12 +56763,12 @@ i32.const 6256 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0211 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0204 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0212 + br $for-loop|0205 end end i32.const -1 @@ -57325,7 +56789,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57361,7 +56825,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0214 + loop $for-loop|0207 local.get $1 i32.const 0 i32.ge_s @@ -57384,7 +56848,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0214 + br $for-loop|0207 end end i32.const -1 @@ -57407,8 +56871,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0216 - loop $for-loop|0217 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0209 + loop $for-loop|0210 local.get $1 i32.const 0 i32.ge_s @@ -57426,12 +56890,12 @@ i32.const 6320 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0216 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0209 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0217 + br $for-loop|0210 end end i32.const -1 @@ -57452,7 +56916,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57488,7 +56952,7 @@ i32.sub local.set $1 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0219 + loop $for-loop|0212 local.get $1 i32.const 0 i32.ge_s @@ -57511,7 +56975,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0219 + br $for-loop|0212 end end i32.const -1 @@ -57534,8 +56998,8 @@ i32.const 1 i32.sub local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0221 - loop $for-loop|0222 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0214 + loop $for-loop|0215 local.get $1 i32.const 0 i32.ge_s @@ -57553,12 +57017,12 @@ i32.const 6384 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0221 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0214 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|0222 + br $for-loop|0215 end end i32.const -1 @@ -57579,7 +57043,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57587,17 +57051,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set @@ -57605,21 +57069,21 @@ i32.const 6416 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|0224 + loop $for-loop|0217 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_s local.set $0 @@ -57627,19 +57091,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6416 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0224 + local.set $3 + br $for-loop|0217 end end i32.const 1 @@ -57650,21 +57114,21 @@ i32.const 6448 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0226 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0219 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|0227 + loop $for-loop|0220 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_s local.set $0 @@ -57672,19 +57136,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6448 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0226 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0219 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0227 + local.set $3 + br $for-loop|0220 end end i32.const 1 @@ -57701,7 +57165,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57709,17 +57173,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set @@ -57727,21 +57191,21 @@ i32.const 6480 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|0229 + loop $for-loop|0222 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 @@ -57749,19 +57213,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6480 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0229 + local.set $3 + br $for-loop|0222 end end i32.const 1 @@ -57772,21 +57236,21 @@ i32.const 6512 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0231 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0224 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|0232 + loop $for-loop|0225 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 @@ -57794,19 +57258,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6512 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0231 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0224 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0232 + local.set $3 + br $for-loop|0225 end end i32.const 1 @@ -57823,7 +57287,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57831,17 +57295,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set @@ -57849,21 +57313,21 @@ i32.const 6544 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0235 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0228 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|0236 + loop $for-loop|0229 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 @@ -57871,19 +57335,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0235 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0228 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0236 + local.set $3 + br $for-loop|0229 end end i32.const 1 @@ -57894,21 +57358,21 @@ i32.const 6576 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0238 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0231 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 local.set $1 - loop $for-loop|0239 + loop $for-loop|0232 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add i32.load8_u local.set $0 @@ -57916,19 +57380,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6576 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0238 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0231 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0239 + local.set $3 + br $for-loop|0232 end end i32.const 1 @@ -57945,7 +57409,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57953,17 +57417,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set @@ -57971,23 +57435,23 @@ i32.const 6608 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|0241 + loop $for-loop|0234 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl i32.add @@ -57997,19 +57461,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6608 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0241 + local.set $3 + br $for-loop|0234 end end i32.const 1 @@ -58020,23 +57484,23 @@ i32.const 6640 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0243 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0236 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|0244 + loop $for-loop|0237 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl i32.add @@ -58046,19 +57510,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6640 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0243 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0236 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0244 + local.set $3 + br $for-loop|0237 end end i32.const 1 @@ -58075,7 +57539,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58083,17 +57547,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set @@ -58101,23 +57565,23 @@ i32.const 6672 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|0246 + loop $for-loop|0239 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl i32.add @@ -58127,19 +57591,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6672 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0246 + local.set $3 + br $for-loop|0239 end end i32.const 1 @@ -58150,23 +57614,23 @@ i32.const 6704 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0248 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0241 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u local.set $1 - loop $for-loop|0249 + loop $for-loop|0242 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl i32.add @@ -58176,19 +57640,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6704 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0248 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0241 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0249 + local.set $3 + br $for-loop|0242 end end i32.const 1 @@ -58205,7 +57669,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58213,17 +57677,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set @@ -58231,23 +57695,23 @@ i32.const 6736 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0251 + loop $for-loop|0244 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -58257,19 +57721,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6736 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0251 + local.set $3 + br $for-loop|0244 end end i32.const 1 @@ -58280,23 +57744,23 @@ i32.const 6768 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0253 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0246 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0254 + loop $for-loop|0247 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -58306,19 +57770,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6768 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0253 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0246 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0254 + local.set $3 + br $for-loop|0247 end end i32.const 1 @@ -58335,7 +57799,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58343,17 +57807,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set @@ -58361,23 +57825,23 @@ i32.const 6800 i32.store offset=4 i32.const 0 - local.set $5 + local.set $3 block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0256 + loop $for-loop|0249 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -58387,19 +57851,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6800 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0256 + local.set $3 + br $for-loop|0249 end end i32.const 1 @@ -58410,23 +57874,23 @@ i32.const 6832 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0258 (result i32) - local.get $3 + local.set $3 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0251 (result i32) + local.get $5 i32.load offset=4 local.set $2 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0259 + loop $for-loop|0252 local.get $1 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -58436,19 +57900,19 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $5 local.get $3 + local.get $5 i32.const 6832 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0258 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0251 drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0259 + local.set $3 + br $for-loop|0252 end end i32.const 1 @@ -58465,7 +57929,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58501,7 +57965,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0261 + loop $for-loop|0254 local.get $0 local.get $3 i32.gt_s @@ -58529,7 +57993,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|0261 + br $for-loop|0254 end end i32.const 1 @@ -58541,7 +58005,7 @@ i32.store offset=4 i32.const 0 local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0263 (result i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0256 (result i32) local.get $4 i32.load offset=4 local.set $1 @@ -58550,7 +58014,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0264 + loop $for-loop|0257 local.get $0 local.get $3 i32.gt_s @@ -58572,13 +58036,13 @@ i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0263 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0256 drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|0264 + br $for-loop|0257 end end i32.const 1 @@ -58595,7 +58059,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58631,7 +58095,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0266 + loop $for-loop|0259 local.get $0 local.get $3 i32.gt_s @@ -58659,7 +58123,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|0266 + br $for-loop|0259 end end i32.const 1 @@ -58671,7 +58135,7 @@ i32.store offset=4 i32.const 0 local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0268 (result i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0261 (result i32) local.get $4 i32.load offset=4 local.set $1 @@ -58680,7 +58144,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0269 + loop $for-loop|0262 local.get $0 local.get $3 i32.gt_s @@ -58702,13 +58166,13 @@ i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0268 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0261 drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|0269 + br $for-loop|0262 end end i32.const 1 @@ -58725,7 +58189,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58761,7 +58225,7 @@ i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0271 + loop $for-loop|0264 local.get $0 local.get $3 i32.gt_s @@ -58772,11 +58236,11 @@ i32.shl i32.add f32.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $10 + local.get $11 local.get $3 local.get $4 i32.const 6992 @@ -58789,7 +58253,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|0271 + br $for-loop|0264 end end i32.const 1 @@ -58801,7 +58265,7 @@ i32.store offset=4 i32.const 0 local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0273 (result i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0266 (result i32) local.get $4 i32.load offset=4 local.set $1 @@ -58810,7 +58274,7 @@ i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0274 + loop $for-loop|0267 local.get $0 local.get $3 i32.gt_s @@ -58821,24 +58285,24 @@ i32.shl i32.add f32.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $10 + local.get $11 local.get $3 local.get $4 i32.const 7024 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0273 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0266 drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|0274 + br $for-loop|0267 end end i32.const 1 @@ -58855,7 +58319,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58891,7 +58355,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0276 + loop $for-loop|0269 local.get $0 local.get $3 i32.gt_s @@ -58902,11 +58366,11 @@ i32.shl i32.add f64.load - local.set $11 + local.set $12 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $11 + local.get $12 local.get $3 local.get $4 i32.const 7056 @@ -58919,7 +58383,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|0276 + br $for-loop|0269 end end i32.const 1 @@ -58931,7 +58395,7 @@ i32.store offset=4 i32.const 0 local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0278 (result i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0271 (result i32) local.get $4 i32.load offset=4 local.set $1 @@ -58940,7 +58404,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0279 + loop $for-loop|0272 local.get $0 local.get $3 i32.gt_s @@ -58951,24 +58415,24 @@ i32.shl i32.add f64.load - local.set $11 + local.set $12 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $11 + local.get $12 local.get $3 local.get $4 i32.const 7088 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0278 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0271 drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|0279 + br $for-loop|0272 end end i32.const 1 @@ -58985,7 +58449,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59043,7 +58507,7 @@ local.get $4 i32.load offset=8 local.set $1 - loop $for-loop|043 + loop $for-loop|054274 local.get $1 local.get $3 i32.gt_s @@ -59063,7 +58527,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|043 + br $for-loop|054274 end end global.get $std/typedarray/forEachCallCount @@ -59081,7 +58545,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59142,7 +58606,7 @@ local.get $4 i32.load offset=8 local.set $1 - loop $for-loop|0282 + loop $for-loop|056 local.get $1 local.get $3 i32.gt_s @@ -59162,7 +58626,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|0282 + br $for-loop|056 end end global.get $std/typedarray/forEachCallCount @@ -59180,7 +58644,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59241,7 +58705,7 @@ local.get $4 i32.load offset=8 local.set $1 - loop $for-loop|0285 + loop $for-loop|059 local.get $1 local.get $3 i32.gt_s @@ -59261,7 +58725,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|0285 + br $for-loop|059 end end global.get $std/typedarray/forEachCallCount @@ -59279,7 +58743,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59339,7 +58803,7 @@ i32.const 1 i32.shr_u local.set $1 - loop $for-loop|045 + loop $for-loop|061278 local.get $1 local.get $3 i32.gt_s @@ -59361,7 +58825,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|045 + br $for-loop|061278 end end global.get $std/typedarray/forEachCallCount @@ -59379,7 +58843,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59442,7 +58906,7 @@ i32.const 1 i32.shr_u local.set $1 - loop $for-loop|047 + loop $for-loop|063280 local.get $1 local.get $3 i32.gt_s @@ -59464,7 +58928,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|047 + br $for-loop|063280 end end global.get $std/typedarray/forEachCallCount @@ -59482,7 +58946,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59539,7 +59003,7 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|049 + loop $for-loop|065 local.get $1 local.get $3 i32.gt_s @@ -59561,7 +59025,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|049 + br $for-loop|065 end end global.get $std/typedarray/forEachCallCount @@ -59579,7 +59043,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59636,7 +59100,7 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|051 + loop $for-loop|067 local.get $1 local.get $3 i32.gt_s @@ -59658,7 +59122,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|051 + br $for-loop|067 end end global.get $std/typedarray/forEachCallCount @@ -59676,7 +59140,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59736,7 +59200,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|053291 + loop $for-loop|069 local.get $0 local.get $3 i32.gt_s @@ -59758,7 +59222,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|053291 + br $for-loop|069 end end global.get $std/typedarray/forEachCallCount @@ -59776,7 +59240,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59836,7 +59300,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|055 + loop $for-loop|071285 local.get $0 local.get $3 i32.gt_s @@ -59858,7 +59322,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|055 + br $for-loop|071285 end end global.get $std/typedarray/forEachCallCount @@ -59876,7 +59340,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59936,7 +59400,7 @@ i32.const 2 i32.shr_u local.set $0 - loop $for-loop|057 + loop $for-loop|073287 local.get $0 local.get $3 i32.gt_s @@ -59958,7 +59422,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|057 + br $for-loop|073287 end end global.get $std/typedarray/forEachCallCount @@ -59976,7 +59440,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60036,7 +59500,7 @@ i32.const 3 i32.shr_u local.set $0 - loop $for-loop|059 + loop $for-loop|075 local.get $0 local.get $3 i32.gt_s @@ -60058,7 +59522,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|059 + br $for-loop|075 end end global.get $std/typedarray/forEachCallCount @@ -60094,18 +59558,18 @@ global.get $~lib/memory/__stack_pointer i32.const 1 call $~lib/typedarray/Float64Array#constructor - local.tee $3 + local.tee $5 i32.store offset=12 - local.get $3 + local.get $5 i32.const 0 f64.const nan:0x8000000000000 call $~lib/typedarray/Float64Array#__set i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $3 + local.get $5 i32.load offset=8 i32.const 3 i32.shr_u @@ -60115,17 +59579,17 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $3 + local.get $5 i32.load offset=4 local.set $2 loop $while-continue|0 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 3 i32.shl i32.add @@ -60133,17 +59597,17 @@ f64.const nan:0x8000000000000 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -60154,11 +59618,11 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $3 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) i32.const 0 - local.set $6 - i32.const 0 - local.get $3 + local.get $5 i32.load offset=8 i32.const 3 i32.shr_u @@ -60169,36 +59633,36 @@ i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $3 + local.get $5 i32.load offset=4 local.set $0 - loop $while-continue|0295 + loop $while-continue|0289 local.get $1 - local.get $6 + local.get $3 i32.gt_s if i32.const 1 i32.const 1 local.get $0 - local.get $6 + local.get $3 i32.const 3 i32.shl i32.add f64.load - local.tee $11 - local.get $11 + local.tee $12 + local.get $12 f64.ne - local.get $11 + local.get $12 f64.const nan:0x8000000000000 f64.eq select br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $while-continue|0295 + local.set $3 + br $while-continue|0289 end end i32.const 0 @@ -60215,18 +59679,18 @@ global.get $~lib/memory/__stack_pointer i32.const 1 call $~lib/typedarray/Float32Array#constructor - local.tee $3 + local.tee $5 i32.store offset=24 - local.get $3 + local.get $5 i32.const 0 f32.const nan:0x400000 call $~lib/typedarray/Float32Array#__set i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u @@ -60236,17 +59700,17 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $3 + local.get $5 i32.load offset=4 local.set $2 - loop $while-continue|0296 - local.get $1 + loop $while-continue|0290 + local.get $0 local.get $4 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -60254,17 +59718,17 @@ f32.const nan:0x400000 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 - br $while-continue|0296 + local.set $0 + br $while-continue|0290 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -60275,11 +59739,11 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $3 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) i32.const 0 - local.set $6 - i32.const 0 - local.get $3 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u @@ -60290,36 +59754,36 @@ i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $3 + local.get $5 i32.load offset=4 local.set $0 - loop $while-continue|062 + loop $while-continue|078 local.get $1 - local.get $6 + local.get $3 i32.gt_s if i32.const 1 i32.const 1 local.get $0 - local.get $6 + local.get $3 i32.const 2 i32.shl i32.add f32.load - local.tee $10 - local.get $10 + local.tee $11 + local.get $11 f32.ne - local.get $10 + local.get $11 f32.const nan:0x400000 f32.eq select br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 - br $while-continue|062 + local.set $3 + br $while-continue|078 end end i32.const 0 @@ -60340,7 +59804,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60390,7 +59854,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner22 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60398,7 +59862,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60424,7 +59888,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60436,7 +59900,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60486,7 +59950,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner22 + br_if $folding-inner15 local.get $2 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -60501,7 +59965,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60513,7 +59977,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60563,7 +60027,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner22 + br_if $folding-inner15 local.get $2 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -60578,7 +60042,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60590,7 +60054,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60640,7 +60104,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner22 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60648,7 +60112,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60674,7 +60138,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60686,7 +60150,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60736,7 +60200,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner22 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60744,7 +60208,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60770,7 +60234,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60782,7 +60246,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60832,7 +60296,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner22 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60840,7 +60304,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60866,7 +60330,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60878,7 +60342,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60928,7 +60392,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner22 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60936,7 +60400,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60962,7 +60426,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60974,7 +60438,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61011,7 +60475,12 @@ i32.const 9584 i32.store offset=12 local.get $2 - call $~lib/typedarray/Int64Array#join + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + call $~lib/util/string/joinIntegerArray local.set $1 global.get $~lib/memory/__stack_pointer local.tee $0 @@ -61024,7 +60493,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner22 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -61032,7 +60501,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -61041,7 +60510,12 @@ i32.const 9584 i32.store local.get $2 - call $~lib/typedarray/Int64Array#join + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + call $~lib/util/string/joinIntegerArray local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -61058,7 +60532,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -61070,7 +60544,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61120,7 +60594,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner22 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -61128,7 +60602,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -61154,7 +60628,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -61166,7 +60640,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61216,7 +60690,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -61224,7 +60698,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -61250,7 +60724,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner25 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -61262,7 +60736,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61312,7 +60786,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -61320,7 +60794,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -61346,7 +60820,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner25 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -61406,7 +60880,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61427,7 +60901,7 @@ call $~lib/typedarray/Int8Array#constructor local.tee $6 i32.store offset=4 - loop $for-loop|00 + loop $for-loop|028 local.get $2 local.get $4 i32.lt_s @@ -61443,7 +60917,7 @@ i32.const 1 i32.add local.set $2 - br $for-loop|00 + br $for-loop|028 end end global.get $~lib/memory/__stack_pointer @@ -61468,7 +60942,7 @@ i32.sub i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $3 + local.tee $5 i32.store offset=12 i32.const 1 global.set $~argumentsLength @@ -61480,12 +60954,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $5 i32.const 20 i32.sub i32.load offset=16 @@ -61497,16 +60971,16 @@ local.tee $1 i32.store local.get $1 - local.get $3 + local.get $5 i32.store local.get $1 - local.get $3 + local.get $5 call $~lib/rt/itcms/__link local.get $1 local.get $0 i32.store offset=8 local.get $1 - local.get $3 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -61529,7 +61003,7 @@ local.get $2 call $~lib/typedarray/Int8Array#__get i32.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $2 i32.const 1 i32.add @@ -61550,7 +61024,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61571,7 +61045,7 @@ call $~lib/typedarray/Uint8Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|040 + loop $for-loop|030 local.get $1 local.get $2 i32.lt_s @@ -61588,7 +61062,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|040 + br $for-loop|030 end end global.get $~lib/memory/__stack_pointer @@ -61625,7 +61099,7 @@ i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|11 + loop $for-loop|131 local.get $1 local.get $2 i32.lt_s @@ -61637,12 +61111,12 @@ local.get $1 call $~lib/typedarray/Uint8Array#__get i32.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|11 + br $for-loop|131 end end global.get $~lib/memory/__stack_pointer @@ -61658,7 +61132,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61679,7 +61153,7 @@ call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $6 i32.store offset=4 - loop $for-loop|020 + loop $for-loop|034 local.get $2 local.get $4 i32.lt_s @@ -61696,7 +61170,7 @@ i32.const 1 i32.add local.set $2 - br $for-loop|020 + br $for-loop|034 end end global.get $~lib/memory/__stack_pointer @@ -61721,7 +61195,7 @@ i32.sub i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $3 + local.tee $5 i32.store offset=12 i32.const 1 global.set $~argumentsLength @@ -61733,12 +61207,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $5 i32.const 20 i32.sub i32.load offset=16 @@ -61750,16 +61224,16 @@ local.tee $1 i32.store local.get $1 - local.get $3 + local.get $5 i32.store local.get $1 - local.get $3 + local.get $5 call $~lib/rt/itcms/__link local.get $1 local.get $0 i32.store offset=8 local.get $1 - local.get $3 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -61770,7 +61244,7 @@ i32.store offset=16 i32.const 0 local.set $2 - loop $for-loop|121 + loop $for-loop|135 local.get $2 local.get $4 i32.lt_s @@ -61782,12 +61256,12 @@ local.get $2 call $~lib/typedarray/Uint8ClampedArray#__get i32.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|121 + br $for-loop|135 end end global.get $~lib/memory/__stack_pointer @@ -61803,7 +61277,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61824,7 +61298,7 @@ call $~lib/typedarray/Int16Array#constructor local.tee $6 i32.store offset=4 - loop $for-loop|032 + loop $for-loop|037 local.get $1 local.get $2 i32.lt_s @@ -61840,7 +61314,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|032 + br $for-loop|037 end end global.get $~lib/memory/__stack_pointer @@ -61877,7 +61351,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61888,23 +61362,23 @@ local.tee $0 i32.const 1 i32.and - br_if $folding-inner32 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 local.get $4 i32.store - local.get $3 + local.get $5 local.get $4 call $~lib/rt/itcms/__link - local.get $3 + local.get $5 local.get $0 i32.store offset=8 - local.get $3 + local.get $5 local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -61912,11 +61386,11 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $3 + local.get $5 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|133 + loop $for-loop|138 local.get $1 local.get $2 i32.lt_s @@ -61924,16 +61398,16 @@ local.get $6 local.get $1 call $~lib/typedarray/Int16Array#__get - local.get $3 + local.get $5 local.get $1 call $~lib/typedarray/Int16Array#__get i32.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|133 + br $for-loop|138 end end global.get $~lib/memory/__stack_pointer @@ -61949,7 +61423,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61970,7 +61444,7 @@ call $~lib/typedarray/Uint16Array#constructor local.tee $6 i32.store offset=4 - loop $for-loop|036 + loop $for-loop|041 local.get $1 local.get $2 i32.lt_s @@ -61987,7 +61461,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|036 + br $for-loop|041 end end global.get $~lib/memory/__stack_pointer @@ -62024,7 +61498,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62035,23 +61509,23 @@ local.tee $0 i32.const 1 i32.and - br_if $folding-inner32 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 local.get $4 i32.store - local.get $3 + local.get $5 local.get $4 call $~lib/rt/itcms/__link - local.get $3 + local.get $5 local.get $0 i32.store offset=8 - local.get $3 + local.get $5 local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -62059,11 +61533,11 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $3 + local.get $5 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|137 + loop $for-loop|142 local.get $1 local.get $2 i32.lt_s @@ -62071,16 +61545,16 @@ local.get $6 local.get $1 call $~lib/typedarray/Uint16Array#__get - local.get $3 + local.get $5 local.get $1 call $~lib/typedarray/Uint16Array#__get i32.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|137 + br $for-loop|142 end end global.get $~lib/memory/__stack_pointer @@ -62096,7 +61570,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62117,7 +61591,7 @@ call $~lib/typedarray/Int32Array#constructor local.tee $6 i32.store offset=4 - loop $for-loop|044 + loop $for-loop|047 local.get $1 local.get $2 i32.lt_s @@ -62132,7 +61606,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|044 + br $for-loop|047 end end global.get $~lib/memory/__stack_pointer @@ -62169,7 +61643,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62180,23 +61654,23 @@ local.tee $0 i32.const 3 i32.and - br_if $folding-inner32 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 local.get $4 i32.store - local.get $3 + local.get $5 local.get $4 call $~lib/rt/itcms/__link - local.get $3 + local.get $5 local.get $0 i32.store offset=8 - local.get $3 + local.get $5 local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -62204,11 +61678,11 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $3 + local.get $5 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|145 + loop $for-loop|148 local.get $1 local.get $2 i32.lt_s @@ -62216,16 +61690,16 @@ local.get $6 local.get $1 call $~lib/typedarray/Int32Array#__get - local.get $3 + local.get $5 local.get $1 call $~lib/typedarray/Int32Array#__get i32.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|145 + br $for-loop|148 end end global.get $~lib/memory/__stack_pointer @@ -62241,7 +61715,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62262,7 +61736,7 @@ call $~lib/typedarray/Uint32Array#constructor local.tee $6 i32.store offset=4 - loop $for-loop|048 + loop $for-loop|053 local.get $1 local.get $2 i32.lt_s @@ -62277,7 +61751,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|048 + br $for-loop|053 end end global.get $~lib/memory/__stack_pointer @@ -62314,7 +61788,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62325,23 +61799,23 @@ local.tee $0 i32.const 3 i32.and - br_if $folding-inner32 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 local.get $4 i32.store - local.get $3 + local.get $5 local.get $4 call $~lib/rt/itcms/__link - local.get $3 + local.get $5 local.get $0 i32.store offset=8 - local.get $3 + local.get $5 local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -62349,11 +61823,11 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $3 + local.get $5 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|149 + loop $for-loop|154 local.get $1 local.get $2 i32.lt_s @@ -62361,16 +61835,16 @@ local.get $6 local.get $1 call $~lib/typedarray/Uint32Array#__get - local.get $3 + local.get $5 local.get $1 call $~lib/typedarray/Uint32Array#__get i32.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|149 + br $for-loop|154 end end global.get $~lib/memory/__stack_pointer @@ -62386,7 +61860,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62407,7 +61881,7 @@ call $~lib/typedarray/Int64Array#constructor local.tee $6 i32.store offset=4 - loop $for-loop|052 + loop $for-loop|057 local.get $1 local.get $2 i32.lt_s @@ -62423,7 +61897,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|052 + br $for-loop|057 end end global.get $~lib/memory/__stack_pointer @@ -62460,7 +61934,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62471,23 +61945,23 @@ local.tee $0 i32.const 7 i32.and - br_if $folding-inner32 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 local.get $4 i32.store - local.get $3 + local.get $5 local.get $4 call $~lib/rt/itcms/__link - local.get $3 + local.get $5 local.get $0 i32.store offset=8 - local.get $3 + local.get $5 local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -62495,11 +61969,11 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $3 + local.get $5 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|153 + loop $for-loop|158 local.get $1 local.get $2 i32.lt_s @@ -62507,16 +61981,16 @@ local.get $6 local.get $1 call $~lib/typedarray/Int64Array#__get - local.get $3 + local.get $5 local.get $1 call $~lib/typedarray/Int64Array#__get i64.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|153 + br $for-loop|158 end end global.get $~lib/memory/__stack_pointer @@ -62532,7 +62006,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62606,7 +62080,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62617,23 +62091,23 @@ local.tee $0 i32.const 7 i32.and - br_if $folding-inner32 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 local.get $4 i32.store - local.get $3 + local.get $5 local.get $4 call $~lib/rt/itcms/__link - local.get $3 + local.get $5 local.get $0 i32.store offset=8 - local.get $3 + local.get $5 local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -62641,7 +62115,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $3 + local.get $5 i32.store offset=16 i32.const 0 local.set $1 @@ -62653,11 +62127,11 @@ local.get $6 local.get $1 call $~lib/typedarray/Uint64Array#__get - local.get $3 + local.get $5 local.get $1 call $~lib/typedarray/Uint64Array#__get i64.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $1 i32.const 1 i32.add @@ -62678,7 +62152,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62699,7 +62173,7 @@ call $~lib/typedarray/Float32Array#constructor local.tee $6 i32.store offset=4 - loop $for-loop|063 + loop $for-loop|064 local.get $1 local.get $2 i32.lt_s @@ -62715,7 +62189,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|063 + br $for-loop|064 end end global.get $~lib/memory/__stack_pointer @@ -62752,7 +62226,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62763,23 +62237,23 @@ local.tee $0 i32.const 3 i32.and - br_if $folding-inner32 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 local.get $4 i32.store - local.get $3 + local.get $5 local.get $4 call $~lib/rt/itcms/__link - local.get $3 + local.get $5 local.get $0 i32.store offset=8 - local.get $3 + local.get $5 local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -62787,11 +62261,11 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $3 + local.get $5 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|164 + loop $for-loop|165 local.get $1 local.get $2 i32.lt_s @@ -62799,16 +62273,16 @@ local.get $6 local.get $1 call $~lib/typedarray/Float32Array#__get - local.get $3 + local.get $5 local.get $1 call $~lib/typedarray/Float32Array#__get f32.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|164 + br $for-loop|165 end end global.get $~lib/memory/__stack_pointer @@ -62824,7 +62298,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62845,7 +62319,7 @@ call $~lib/typedarray/Float64Array#constructor local.tee $6 i32.store offset=4 - loop $for-loop|066 + loop $for-loop|070 local.get $1 local.get $2 i32.lt_s @@ -62861,7 +62335,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|066 + br $for-loop|070 end end global.get $~lib/memory/__stack_pointer @@ -62898,7 +62372,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62909,23 +62383,23 @@ local.tee $0 i32.const 7 i32.and - br_if $folding-inner32 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 local.get $4 i32.store - local.get $3 + local.get $5 local.get $4 call $~lib/rt/itcms/__link - local.get $3 + local.get $5 local.get $0 i32.store offset=8 - local.get $3 + local.get $5 local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -62933,11 +62407,11 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $3 + local.get $5 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|167 + loop $for-loop|171 local.get $1 local.get $2 i32.lt_s @@ -62945,16 +62419,16 @@ local.get $6 local.get $1 call $~lib/typedarray/Float64Array#__get - local.get $3 + local.get $5 local.get $1 call $~lib/typedarray/Float64Array#__get f64.ne - br_if $folding-inner15 + br_if $folding-inner24 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|167 + br $for-loop|171 end end global.get $~lib/memory/__stack_pointer @@ -62975,105 +62449,106 @@ global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $6 local.tee $8 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 f32.const 400 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const nan:0x400000 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const inf call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Int64Array#constructor - local.tee $5 + local.tee $7 i32.store offset=8 - local.get $5 + local.get $7 i32.const 0 i64.const -10 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $7 i32.const 1 i64.const 100 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $7 i32.const 2 i64.const 10 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $7 i32.const 3 i64.const 300 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 2 call $~lib/typedarray/Int32Array#constructor - local.tee $6 + local.tee $0 i32.store offset=16 - local.get $6 + local.get $0 i32.const 0 i32.const 300 call $~lib/typedarray/Int32Array#__set - local.get $6 + local.get $0 i32.const 1 i32.const -1 call $~lib/typedarray/Int32Array#__set local.get $8 i32.load offset=8 - local.get $0 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.add i32.lt_s - br_if $folding-inner17 + br_if $folding-inner19 local.get $8 i32.load offset=4 i32.const 1 i32.add - local.set $4 - local.get $0 + local.set $5 + local.get $1 i32.load offset=4 - local.set $2 - local.get $0 + local.set $4 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0299 - local.get $1 + local.set $2 + loop $for-loop|082 + local.get $2 local.get $16 i32.gt_s if - local.get $4 + local.get $5 local.get $16 i32.add - local.get $2 + local.get $4 local.get $16 i32.const 2 i32.shl i32.add f32.load - local.tee $10 - local.get $10 + local.tee $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 @@ -63085,48 +62560,48 @@ i32.const 1 i32.add local.set $16 - br $for-loop|0299 + br $for-loop|082 end end local.get $8 - local.get $5 + local.get $7 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> i32.const 0 - local.set $5 + local.set $3 local.get $8 i32.load offset=8 - local.get $6 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.const 8 i32.add i32.lt_s - br_if $folding-inner17 + br_if $folding-inner19 local.get $8 i32.load offset=4 i32.const 8 i32.add local.set $2 - local.get $6 + local.get $0 i32.load offset=4 local.set $1 - local.get $6 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0300 + loop $for-loop|086312 local.get $0 - local.get $5 + local.get $3 i32.gt_s if local.get $2 - local.get $5 + local.get $3 i32.add local.get $1 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -63145,11 +62620,11 @@ i32.or i32.and i32.store8 - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0300 + local.set $3 + br $for-loop|086312 end end i32.const 10 @@ -63188,26 +62663,26 @@ global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.const 0 i32.const -10 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $5 i32.const 1 i32.const 100 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $5 i32.const 2 i32.const 10 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $5 i32.const 3 i32.const 300 call $~lib/typedarray/Int16Array#__set i32.const 0 - local.set $5 + local.set $3 local.get $8 i32.load offset=8 local.get $0 @@ -63215,7 +62690,7 @@ i32.const 2 i32.shr_u i32.lt_s - br_if $folding-inner17 + br_if $folding-inner19 local.get $8 i32.load offset=4 local.set $4 @@ -63227,17 +62702,17 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0301 + loop $for-loop|090 local.get $1 - local.get $5 + local.get $3 i32.gt_s if + local.get $3 local.get $4 - local.get $5 i32.add i32.const 255 local.get $2 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add @@ -63248,15 +62723,15 @@ i32.gt_u select i32.store8 - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|0301 + local.set $3 + br $for-loop|090 end end local.get $8 - local.get $3 + local.get $5 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> i32.const 10 @@ -63268,7 +62743,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $8 + local.get $6 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> i32.const 0 @@ -63280,7 +62755,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63315,7 +62790,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -63404,7 +62879,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63439,15 +62914,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of143 - block $0of144 - block $outOfRange45 + block $1of174 + block $0of175 + block $outOfRange76 global.get $~argumentsLength - br_table $0of144 $1of143 $outOfRange45 + br_table $0of175 $1of174 $outOfRange76 end unreachable end @@ -63528,7 +63003,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63563,15 +63038,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of147 - block $0of148 - block $outOfRange49 + block $1of178 + block $0of179 + block $outOfRange80 global.get $~argumentsLength - br_table $0of148 $1of147 $outOfRange49 + br_table $0of179 $1of178 $outOfRange80 end unreachable end @@ -63652,7 +63127,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63687,15 +63162,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of151 - block $0of152 - block $outOfRange53 + block $1of182 + block $0of183 + block $outOfRange84 global.get $~argumentsLength - br_table $0of152 $1of151 $outOfRange53 + br_table $0of183 $1of182 $outOfRange84 end unreachable end @@ -63780,7 +63255,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63815,15 +63290,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of155 - block $0of156 - block $outOfRange57 + block $1of186 + block $0of187 + block $outOfRange88 global.get $~argumentsLength - br_table $0of156 $1of155 $outOfRange57 + br_table $0of187 $1of186 $outOfRange88 end unreachable end @@ -63908,7 +63383,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63943,15 +63418,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of159 - block $0of160 - block $outOfRange61 + block $1of190 + block $0of191 + block $outOfRange92 global.get $~argumentsLength - br_table $0of160 $1of159 $outOfRange61 + br_table $0of191 $1of190 $outOfRange92 end unreachable end @@ -64036,7 +63511,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -64071,15 +63546,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of163 - block $0of164 - block $outOfRange65 + block $1of194 + block $0of195 + block $outOfRange96 global.get $~argumentsLength - br_table $0of164 $1of163 $outOfRange65 + br_table $0of195 $1of194 $outOfRange96 end unreachable end @@ -64164,7 +63639,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -64199,15 +63674,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of167 - block $0of168 - block $outOfRange69 + block $1of198 + block $0of199 + block $outOfRange100 global.get $~argumentsLength - br_table $0of168 $1of167 $outOfRange69 + br_table $0of199 $1of198 $outOfRange100 end unreachable end @@ -64292,7 +63767,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -64327,15 +63802,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of171 - block $0of172 - block $outOfRange73 + block $1of1102 + block $0of1103 + block $outOfRange104 global.get $~argumentsLength - br_table $0of172 $1of171 $outOfRange73 + br_table $0of1103 $1of1102 $outOfRange104 end unreachable end @@ -64420,7 +63895,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -64455,15 +63930,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of175 - block $0of176 - block $outOfRange77 + block $1of1106 + block $0of1107 + block $outOfRange108 global.get $~argumentsLength - br_table $0of176 $1of175 $outOfRange77 + br_table $0of1107 $1of1106 $outOfRange108 end unreachable end @@ -64546,7 +64021,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner16 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -64635,12 +64110,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|063 + loop $while-continue|091 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|063 + br $while-continue|091 end end end @@ -64768,122 +64243,122 @@ call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1911 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 675 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 388 - i32.const 3 + i32.const 676 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 389 - i32.const 3 + i32.const 672 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 390 - i32.const 3 + i32.const 673 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 675 - i32.const 5 + i32.const 1360 + i32.const 1632 + i32.const 1911 + i32.const 47 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 676 - i32.const 5 + i32.const 388 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 672 - i32.const 5 + i32.const 389 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 673 - i32.const 5 + i32.const 390 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 878 - i32.const 3 + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 879 - i32.const 3 + i32.const 730 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 880 - i32.const 3 + i32.const 1056 + i32.const 1632 + i32.const 1877 + i32.const 9 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 882 + i32.const 878 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 883 + i32.const 879 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 884 + i32.const 880 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 730 - i32.const 5 + i32.const 882 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 883 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1056 - i32.const 1632 - i32.const 1877 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 884 + i32.const 3 call $~lib/builtins/abort unreachable ) @@ -65415,6 +64890,7 @@ (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -65460,7 +64936,30 @@ i32.lt_s select end - local.set $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + i32.load + local.tee $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + local.get $0 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $0 local.get $2 i32.const 0 i32.lt_s @@ -65468,9 +64967,9 @@ local.get $2 local.get $4 i32.add - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select @@ -65482,37 +64981,13 @@ i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - i32.load - local.tee $4 - i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link + local.tee $2 local.get $1 - local.get $3 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 local.get $1 local.get $2 - local.get $0 - local.get $0 - local.get $2 i32.lt_s select - local.get $0 + local.get $1 i32.sub i32.const 2 i32.shl @@ -65521,11 +64996,12 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -65571,7 +65047,30 @@ i32.lt_s select end - local.set $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + i32.load + local.tee $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + local.get $0 + local.get $3 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $0 local.get $2 i32.const 0 i32.lt_s @@ -65579,9 +65078,9 @@ local.get $2 local.get $4 i32.add - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select @@ -65593,37 +65092,13 @@ i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - i32.load - local.tee $4 - i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link + local.tee $2 local.get $1 - local.get $3 - i32.load offset=4 - local.get $0 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 local.get $1 local.get $2 - local.get $0 - local.get $0 - local.get $2 i32.lt_s select - local.get $0 + local.get $1 i32.sub i32.const 3 i32.shl @@ -65632,7 +65107,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) (local $1 i32) @@ -65751,6 +65226,7 @@ (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -65794,7 +65270,28 @@ i32.lt_s select end - local.set $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + i32.load + local.tee $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + local.get $0 + local.get $1 + local.get $3 + i32.load offset=4 + i32.add + i32.store offset=4 + local.get $0 local.get $2 i32.const 0 i32.lt_s @@ -65802,9 +65299,9 @@ local.get $2 local.get $4 i32.add - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select @@ -65816,42 +65313,20 @@ i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - i32.load - local.tee $4 - i32.store + local.tee $2 local.get $1 - local.get $4 - call $~lib/rt/itcms/__link local.get $1 - local.get $0 - local.get $3 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $0 - local.get $0 local.get $2 i32.lt_s select - local.get $0 + local.get $1 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -65930,11 +65405,11 @@ i32.const 0 i32.gt_s select - local.tee $2 - call $~lib/typedarray/Int32Array#constructor local.tee $3 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 i32.store - local.get $3 + local.get $2 i32.load offset=4 local.get $0 i32.load offset=4 @@ -65942,7 +65417,7 @@ i32.const 2 i32.shl i32.add - local.get $2 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -65950,7 +65425,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 ) (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65972,74 +65447,74 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - i32.const 4 local.get $0 i32.load offset=8 + local.set $3 + local.get $2 + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $2 + local.get $4 + call $~lib/rt/itcms/__link local.get $2 i32.const 4 + local.get $3 + local.get $3 + i32.const 4 i32.gt_s select - local.set $3 + local.tee $4 + local.get $0 + i32.load offset=4 + i32.add + i32.store offset=4 + local.get $2 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $1 + local.tee $0 local.get $4 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 local.get $0 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 + local.get $4 i32.gt_s select - local.get $3 + local.get $4 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66061,74 +65536,74 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - i32.const 4 local.get $0 i32.load offset=8 + local.set $3 + local.get $2 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new local.tee $2 + i32.store local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $2 + local.get $4 + call $~lib/rt/itcms/__link + local.get $2 + i32.const 4 + local.get $3 + local.get $3 i32.const 4 i32.gt_s select - local.set $3 + local.tee $4 + local.get $0 + i32.load offset=4 + i32.add + i32.store offset=4 + local.get $2 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $1 + local.tee $0 local.get $4 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 local.get $0 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 + local.get $4 i32.gt_s select - local.get $3 + local.get $4 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66150,25 +65625,49 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - i32.const 4 local.get $0 i32.load offset=8 i32.const 1 i32.shr_u + local.set $3 + local.get $2 + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new local.tee $2 + i32.store local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $2 + local.get $4 + call $~lib/rt/itcms/__link + local.get $2 + local.get $0 + i32.load offset=4 i32.const 4 - i32.gt_s + local.get $3 + local.get $3 + i32.const 4 + i32.gt_u select - local.set $3 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $2 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -66178,43 +65677,19 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - local.get $1 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 local.get $0 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.const 1 i32.shl @@ -66223,7 +65698,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66245,25 +65720,49 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - i32.const 4 local.get $0 i32.load offset=8 i32.const 1 i32.shr_u + local.set $3 + local.get $2 + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new local.tee $2 + i32.store local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $2 + local.get $4 + call $~lib/rt/itcms/__link + local.get $2 + local.get $0 + i32.load offset=4 i32.const 4 - i32.gt_s + local.get $3 + local.get $3 + i32.const 4 + i32.gt_u select - local.set $3 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $2 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -66273,43 +65772,19 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - local.get $1 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 local.get $0 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.const 1 i32.shl @@ -66318,7 +65793,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66340,25 +65815,49 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - i32.const 4 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u + local.set $3 + local.get $2 + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.store local.get $2 + local.get $4 + call $~lib/rt/itcms/__link + local.get $2 + local.get $0 + i32.load offset=4 i32.const 4 - i32.gt_s + local.get $3 + local.get $3 + i32.const 4 + i32.gt_u select - local.set $3 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $2 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -66368,43 +65867,19 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - local.get $1 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.const 2 i32.shl @@ -66413,7 +65888,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66435,25 +65910,49 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - i32.const 4 local.get $0 i32.load offset=8 i32.const 3 i32.shr_u + local.set $3 + local.get $2 + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $2 + local.get $4 + call $~lib/rt/itcms/__link local.get $2 + local.get $0 + i32.load offset=4 i32.const 4 - i32.gt_s + local.get $3 + local.get $3 + i32.const 4 + i32.gt_u select - local.set $3 + local.tee $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $2 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -66463,43 +65962,19 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - local.get $1 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 local.get $0 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.const 3 i32.shl @@ -66508,7 +65983,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66530,25 +66005,49 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - i32.const 4 local.get $0 i32.load offset=8 i32.const 3 i32.shr_u + local.set $3 + local.get $2 + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.store local.get $2 + local.get $4 + call $~lib/rt/itcms/__link + local.get $2 + local.get $0 + i32.load offset=4 i32.const 4 - i32.gt_s + local.get $3 + local.get $3 + i32.const 4 + i32.gt_u select - local.set $3 + local.tee $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $2 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -66558,43 +66057,19 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - local.get $1 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 local.get $0 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.const 3 i32.shl @@ -66603,7 +66078,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66625,25 +66100,49 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - i32.const 4 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u + local.set $3 + local.get $2 + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $2 + local.get $4 + call $~lib/rt/itcms/__link local.get $2 + local.get $0 + i32.load offset=4 i32.const 4 - i32.gt_s + local.get $3 + local.get $3 + i32.const 4 + i32.gt_u select - local.set $3 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $2 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -66653,43 +66152,19 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - local.get $1 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.const 2 i32.shl @@ -66698,7 +66173,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -67019,6 +66494,334 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $7 + i32.eqz + if + local.get $0 + i64.load + i64.extend32_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa64 + local.get $3 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + local.set $1 + br $__inlined_func$~lib/util/number/itoa64 + end + i64.const 0 + local.get $3 + i64.sub + local.get $3 + local.get $3 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $4 + select + local.tee $3 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.wrap_i64 + local.tee $5 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $4 + i32.add + local.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $5 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $3 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $3 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $3 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.get $4 + i32.add + local.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $0 + call $~lib/util/number/utoa64_dec_lut + end + local.get $4 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + loop $for-loop|0 + local.get $5 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $1 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + local.get $6 + local.get $0 + call $~lib/string/String#substring + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) (local $2 i32) diff --git a/tests/compiler/std/uri.optimized.wat b/tests/compiler/std/uri.optimized.wat index b37d772288..a9fae139e6 100644 --- a/tests/compiler/std/uri.optimized.wat +++ b/tests/compiler/std/uri.optimized.wat @@ -288,16 +288,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 4336 i32.load i32.gt_u @@ -309,7 +309,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 4340 @@ -325,26 +325,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -453,8 +453,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -462,11 +460,12 @@ 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 $2 local.get $3 i32.const 4 @@ -474,6 +473,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -485,17 +485,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -701,7 +701,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -709,6 +708,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -724,7 +724,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -732,6 +731,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -786,11 +786,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1520 @@ -814,11 +814,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1520 @@ -978,17 +978,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1048,15 +1048,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1184,12 +1184,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1229,13 +1227,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1275,10 +1273,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1287,7 +1285,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1296,6 +1293,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1309,12 +1307,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1327,7 +1325,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1336,6 +1333,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1366,12 +1364,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1387,14 +1385,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1408,15 +1406,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1428,13 +1426,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1442,19 +1439,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1462,17 +1461,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1482,18 +1480,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1501,18 +1497,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1523,8 +1519,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1537,13 +1533,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1556,54 +1552,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1613,37 +1609,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1651,20 +1647,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1675,10 +1671,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1695,7 +1691,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1707,38 +1703,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1751,20 +1747,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1787,49 +1783,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1994,29 +1990,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2038,25 +2032,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2129,25 +2123,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2216,25 +2210,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2274,143 +2268,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2437,63 +2417,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2520,23 +2494,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2781,7 +2753,6 @@ (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 local.get $0 i32.const 20 i32.sub @@ -2791,7 +2762,8 @@ i32.and i32.const 16 i32.sub - i32.le_u + local.get $1 + i32.ge_u if local.get $2 local.get $1 @@ -2808,10 +2780,10 @@ local.get $1 local.get $2 i32.load offset=16 - local.tee $0 - local.get $0 + local.tee $2 local.get $1 - i32.gt_u + local.get $2 + i32.lt_u select call $~lib/memory/memory.copy local.get $3 @@ -2839,18 +2811,18 @@ local.set $3 loop $while-continue|0 local.get $1 - local.get $6 + local.get $7 i32.gt_u if block $while-break|0 - local.get $6 + local.get $7 local.set $5 loop $do-continue|1 block $do-break|1 - local.get $0 - local.get $6 + local.get $7 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_u local.tee $4 @@ -2859,29 +2831,29 @@ i32.const 94 i32.ge_u br_if $do-break|1 - local.get $2 local.get $4 i32.const 33 i32.sub + local.get $2 i32.add i32.load8_u br_if $do-break|1 local.get $1 - local.get $6 + local.get $7 i32.const 1 i32.add - local.tee $6 + local.tee $7 i32.gt_u br_if $do-continue|1 end end local.get $5 - local.get $6 + local.get $7 i32.lt_u if local.get $9 - local.get $7 local.get $6 + local.get $7 local.get $5 i32.sub i32.const 1 @@ -2891,7 +2863,7 @@ i32.lt_u if local.get $3 - local.get $7 + local.get $6 local.get $8 i32.add local.tee $9 @@ -2899,21 +2871,21 @@ local.set $3 end local.get $3 - local.get $7 + local.get $6 i32.add - local.get $0 local.get $5 i32.const 1 i32.shl + local.get $0 i32.add local.get $8 call $~lib/memory/memory.copy - local.get $7 + local.get $6 local.get $8 i32.add - local.set $7 + local.set $6 local.get $1 - local.get $6 + local.get $7 i32.le_u br_if $while-break|0 end @@ -2945,7 +2917,7 @@ i32.le_u if (result i32) local.get $1 - local.get $6 + local.get $7 i32.le_u if i32.const 1584 @@ -2956,13 +2928,13 @@ unreachable end i32.const 1 - local.get $0 - local.get $6 + local.get $7 i32.const 1 i32.add - local.tee $6 + local.tee $7 i32.const 1 i32.shl + local.get $0 i32.add i32.load16_u local.tee $5 @@ -3000,17 +2972,17 @@ i32.const 128 i32.lt_u select - local.get $7 + local.get $6 local.tee $5 i32.add - local.tee $7 + local.tee $6 i32.lt_u if local.get $3 - local.get $7 + local.get $6 i32.const 1 i32.shl - local.get $7 + local.get $6 local.get $1 i32.const 1 i32.gt_u @@ -3026,10 +2998,10 @@ local.get $3 local.get $5 i32.add - local.tee $7 + local.tee $6 i32.const 37 i32.store16 - local.get $7 + local.get $6 local.get $4 i32.const 4 i32.shr_u @@ -3060,16 +3032,16 @@ local.get $3 local.get $5 i32.add - local.tee $7 + local.tee $6 i32.const 37 i32.store16 - local.get $7 + local.get $6 local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.tee $7 + local.tee $8 i32.const 4 i32.shr_u i32.const 15 @@ -3077,7 +3049,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $7 + local.get $8 i32.const 15 i32.and i32.const 1676 @@ -3095,20 +3067,20 @@ local.get $4 i32.const 65536 i32.lt_u - if (result i32) + if local.get $3 local.get $5 i32.add - local.tee $7 + local.tee $6 i32.const 37 i32.store16 - local.get $7 + local.get $6 local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.tee $7 + local.tee $8 i32.const 4 i32.shr_u i32.const 15 @@ -3116,7 +3088,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $7 + local.get $8 i32.const 15 i32.and i32.const 1676 @@ -3126,23 +3098,20 @@ i32.shl i32.or i32.store offset=2 - local.get $5 - i32.const 6 - i32.add else local.get $3 local.get $5 i32.add - local.tee $7 + local.tee $6 i32.const 37 i32.store16 - local.get $7 + local.get $6 local.get $4 i32.const 18 i32.shr_u i32.const 240 i32.or - local.tee $7 + local.tee $8 i32.const 4 i32.shr_u i32.const 15 @@ -3150,7 +3119,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $7 + local.get $8 i32.const 15 i32.and i32.const 1676 @@ -3164,12 +3133,12 @@ local.get $5 i32.const 6 i32.add - local.tee $7 - i32.add local.tee $5 + i32.add + local.tee $6 i32.const 37 i32.store16 - local.get $5 + local.get $6 local.get $4 i32.const 12 i32.shr_u @@ -3177,13 +3146,13 @@ i32.and i32.const 128 i32.or - local.tee $5 + local.tee $8 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $5 + local.get $8 i32.const 15 i32.and i32.const 1676 @@ -3193,11 +3162,11 @@ i32.shl i32.or i32.store offset=2 - local.get $7 - i32.const 6 - i32.add end - local.tee $7 + local.get $5 + i32.const 6 + i32.add + local.tee $6 i32.add local.tee $5 i32.const 37 @@ -3210,13 +3179,13 @@ i32.and i32.const 128 i32.or - local.tee $5 + local.tee $8 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $5 + local.get $8 i32.const 15 i32.and i32.const 1676 @@ -3226,11 +3195,11 @@ i32.shl i32.or i32.store offset=2 - local.get $7 + local.get $6 i32.const 6 i32.add end - local.tee $7 + local.tee $6 i32.add local.tee $5 i32.const 37 @@ -3241,13 +3210,13 @@ i32.and i32.const 128 i32.or - local.tee $5 + local.tee $4 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $5 + local.get $4 i32.const 15 i32.and i32.const 1676 @@ -3257,25 +3226,25 @@ i32.shl i32.or i32.store offset=2 - local.get $7 + local.get $6 i32.const 6 i32.add end - local.set $7 - local.get $6 + local.set $6 + local.get $7 i32.const 1 i32.add - local.set $6 + local.set $7 br $while-continue|0 end end end - local.get $7 + local.get $6 local.get $9 i32.lt_u if (result i32) local.get $3 - local.get $7 + local.get $6 call $~lib/rt/itcms/__renew else local.get $3 @@ -3307,7 +3276,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3321,18 +3290,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -3340,20 +3306,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -3366,33 +3332,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -3811,17 +3777,17 @@ i32.const 65536 i32.sub local.tee $5 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $5 i32.const 1023 i32.and i32.const 56320 i32.or i32.const 16 i32.shl - local.get $5 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or i32.or i32.store local.get $6 diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index b33c391db1..4d8966db47 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -181,16 +181,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1440 i32.load i32.gt_u @@ -202,7 +202,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -218,26 +218,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -346,8 +346,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -355,11 +353,12 @@ 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 $2 local.get $3 i32.const 4 @@ -367,6 +366,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -378,17 +378,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -594,7 +594,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -602,6 +601,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -617,7 +617,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -625,6 +624,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -679,11 +679,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -707,11 +707,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 @@ -871,17 +871,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -941,15 +941,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1077,12 +1077,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1220,20 +1218,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if - i32.const 4 memory.size - local.tee $1 + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $2 - i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1242,18 +1241,16 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 - local.get $3 + local.tee $1 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1261,15 +1258,15 @@ unreachable end end + local.get $3 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1296,12 +1293,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 @@ -1311,7 +1308,7 @@ i32.ge_u if local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1320,19 +1317,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 + local.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1363,26 +1360,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $0 + local.set $2 local.get $1 - local.get $2 + local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 - local.get $0 + local.get $2 local.get $1 - local.get $0 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1483,11 +1480,15 @@ global.get $super-inline/foo local.tee $0 i32.store - local.get $0 - i32.const 8 - i32.sub - i32.load - drop + block $__inlined_func$super-inline/Foo#a@virtual + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.eq + br_if $__inlined_func$super-inline/Foo#a@virtual + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.optimized.wat index c72f01d654..50264db820 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.optimized.wat @@ -8,7 +8,7 @@ (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) + (type $i64_i64_i32_i64_i32_=>_i32 (func (param i64 i64 i32 i64 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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -154,7 +154,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -168,18 +168,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -187,20 +184,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -213,33 +210,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -554,8 +551,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -563,11 +558,12 @@ 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 $2 local.get $3 i32.const 4 @@ -575,6 +571,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -586,17 +583,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -802,7 +799,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -810,6 +806,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -825,7 +822,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -833,6 +829,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -887,11 +884,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1552 @@ -915,11 +912,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1552 @@ -1079,17 +1076,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1149,15 +1146,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1285,12 +1282,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1330,13 +1325,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1376,10 +1371,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1388,7 +1383,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1397,6 +1391,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1410,12 +1405,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1428,7 +1423,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1437,6 +1431,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1467,12 +1462,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1488,14 +1483,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1509,15 +1504,15 @@ local.get $0 i32.const 16 i32.add - local.set $2 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.tee $6 + local.get $3 i32.const 1073741820 i32.gt_u if @@ -1529,13 +1524,12 @@ unreachable end local.get $3 - local.get $2 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $3 i32.const 19 i32.add i32.const -16 @@ -1543,19 +1537,21 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if - local.get $2 + memory.size + local.tee $5 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.const 27 - local.get $2 + local.get $3 i32.clz i32.sub i32.shl @@ -1563,17 +1559,16 @@ i32.sub i32.add else - local.get $2 + local.get $3 end i32.const 4 - memory.size - local.tee $6 + local.get $6 + i32.load offset=1568 + local.get $5 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -1583,18 +1578,16 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 + local.tee $2 + local.get $2 local.get $5 - local.get $6 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1602,18 +1595,18 @@ unreachable end end - local.get $3 local.get $6 + local.get $5 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -1624,8 +1617,8 @@ unreachable end end + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1638,13 +1631,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $6 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $4 - i32.load - local.set $6 local.get $2 + i32.load + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1657,54 +1650,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 local.get $2 - local.get $6 + local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store + local.get $3 local.get $2 - local.get $4 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const -2 i32.and i32.store - local.get $4 + local.get $2 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $3 + local.get $2 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $2 - local.get $4 i32.load i32.const -4 i32.and @@ -1714,37 +1707,37 @@ i32.and i32.store end - local.get $4 + local.get $2 local.get $1 i32.store offset=12 - local.get $4 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $4 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $4 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $4 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $4 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.load i32.const -4 i32.and @@ -1752,20 +1745,20 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 i32.const 20 i32.add - local.tee $2 - local.set $3 + local.tee $3 + local.set $2 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 1 @@ -1776,10 +1769,10 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=2 local.get $1 @@ -1796,7 +1789,7 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.store8 offset=3 local.get $1 @@ -1808,38 +1801,38 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $2 i32.const 0 - local.get $3 + local.get $2 i32.sub i32.const 3 i32.and local.tee $1 i32.add - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 local.get $0 local.get $1 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=4 - local.get $5 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -1852,20 +1845,20 @@ i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 0 i32.store offset=16 - local.get $5 + local.get $4 i32.const 0 i32.store offset=20 - local.get $5 + local.get $4 i32.const 0 i32.store offset=24 local.get $0 @@ -1888,49 +1881,49 @@ i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $0 i32.add - local.set $0 - local.get $3 - local.get $1 - i32.sub local.set $1 + local.get $2 + local.get $0 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - local.get $2 + local.get $3 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2095,29 +2088,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -2139,25 +2130,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2230,25 +2221,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2317,25 +2308,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2375,143 +2366,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2538,63 +2515,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2621,23 +2592,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2880,15 +2849,14 @@ end ) (func $~lib/staticarray/StaticArray<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 local.get $1 i32.const 2 i32.shl + local.get $0 i32.add local.get $2 i32.store local.get $2 - local.tee $1 if local.get $0 i32.eqz @@ -2901,10 +2869,10 @@ unreachable end global.get $~lib/rt/itcms/white - local.get $1 + local.get $2 i32.const 20 i32.sub - local.tee $1 + local.tee $2 i32.load offset=4 i32.const 3 i32.and @@ -2917,7 +2885,7 @@ i32.load offset=4 i32.const 3 i32.and - local.tee $2 + local.tee $1 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -2929,12 +2897,12 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $1 i32.const 3 i32.eq select if - local.get $1 + local.get $2 call $~lib/rt/itcms/Object#makeGray end end @@ -3174,13 +3142,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -3209,13 +3177,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -3235,12 +3203,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -3250,12 +3218,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -3263,87 +3231,206 @@ i32.store16 end ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5580 + i32.lt_s + if + i32.const 21984 + i32.const 22032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2032 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) + (local $8 i32) + (local $9 i64) + (local $10 i32) (local $11 i64) - local.get $2 + (local $12 i64) + local.get $1 local.get $0 i64.sub - local.set $8 - local.get $2 + local.set $9 + local.get $1 i64.const 1 i32.const 0 - local.get $3 + local.get $2 i32.sub - local.tee $9 + local.tee $10 i64.extend_i32_s local.tee $0 i64.shl - local.tee $10 + local.tee $11 i64.const 1 i64.sub - local.tee $11 + local.tee $12 i64.and local.set $6 - local.get $2 + local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $1 - local.set $3 - local.get $1 + local.tee $2 + local.set $5 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $5 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $5 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $5 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $5 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $5 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $5 i32.const 100000000 i32.ge_u i32.add end end - local.set $7 + local.set $8 loop $while-continue|0 - local.get $7 + local.get $8 i32.const 0 i32.gt_s if @@ -3359,240 +3446,246 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $7 + local.get $8 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $1 + local.get $2 i32.const 1000000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 1000 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 1000 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 100 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 100 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 + local.get $2 i32.const 10 i32.div_u - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 10 i32.rem_u - local.set $1 + local.set $2 br $break|1 end - local.get $1 - local.set $3 + local.get $2 + local.set $5 i32.const 0 - local.set $1 + local.set $2 br $break|1 end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $4 local.get $5 i32.or if - local.get $5 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 i32.const 1 i32.shl i32.const 3920 i32.add - local.get $3 + local.get $5 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 + local.set $8 local.get $6 - local.get $1 + local.get $2 i64.extend_i32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $0 - local.get $4 + local.get $3 i64.le_u if - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 + local.get $8 i32.const 2 i32.shl i32.const 4848 i32.add i64.load32_u - local.get $9 + local.get $10 i64.extend_i32_s i64.shl - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 3918 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|3 - local.get $2 - local.get $4 + local.get $1 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $8 + local.get $9 i64.lt_u select if (result i32) i32.const 1 - local.get $8 + local.get $9 local.get $0 i64.sub local.get $0 - local.get $2 + local.get $1 i64.add local.tee $6 - local.get $8 + local.get $9 i64.sub i64.gt_u local.get $6 - local.get $8 + local.get $9 i64.lt_u select else i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $2 + local.get $1 i64.add local.set $0 br $while-continue|3 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 return end br $while-continue|0 end end - local.get $9 + local.get $10 i64.extend_i32_s local.set $0 loop $while-continue|4 - local.get $4 + local.get $3 i64.const 10 i64.mul - local.set $4 + local.set $3 local.get $6 i64.const 10 i64.mul - local.tee $2 + local.tee $1 local.get $0 i64.shr_u local.tee $6 - local.get $5 + local.get $4 i64.extend_i32_s i64.or i64.const 0 i64.ne if - local.get $5 + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + local.get $2 i32.const 1 i32.shl i32.const 3920 @@ -3604,32 +3697,28 @@ i32.const 48 i32.add i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 end - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 - local.get $4 - local.get $2 - local.get $11 + local.set $8 + local.get $3 + local.get $1 + local.get $12 i64.and local.tee $6 i64.le_u br_if $while-continue|4 end - local.get $7 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $6 local.set $0 - local.get $8 + local.get $9 i32.const 0 - local.get $7 + local.get $8 i32.sub i32.const 2 i32.shl @@ -3637,39 +3726,39 @@ i32.add i64.load32_u i64.mul - local.set $2 - local.get $5 + local.set $1 + local.get $4 i32.const 1 i32.shl i32.const 3918 i32.add - local.tee $7 + local.tee $8 i32.load16_u - local.set $3 + local.set $5 loop $while-continue|6 - local.get $10 - local.get $4 + local.get $11 + local.get $3 local.get $0 i64.sub i64.le_u i32.const 0 local.get $0 - local.get $2 + local.get $1 i64.lt_u select if (result i32) i32.const 1 - local.get $2 + local.get $1 local.get $0 i64.sub local.get $0 - local.get $10 + local.get $11 i64.add local.tee $6 - local.get $2 + local.get $1 i64.sub i64.gt_u - local.get $2 + local.get $1 local.get $6 i64.gt_u select @@ -3677,21 +3766,21 @@ i32.const 0 end if - local.get $3 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 local.get $0 - local.get $10 + local.get $11 i64.add local.set $0 br $while-continue|6 end end - local.get $7 - local.get $3 - i32.store16 + local.get $8 local.get $5 + i32.store16 + local.get $4 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4040,12 +4129,9 @@ (local $4 i32) (local $5 i32) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) local.get $0 f64.const 0 f64.lt @@ -4060,50 +4146,49 @@ local.get $0 end i64.reinterpret_f64 - local.tee $2 + local.tee $1 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $4 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $2 + local.get $1 i64.const 4503599627370495 i64.and i64.add - local.tee $1 + local.tee $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $2 + local.tee $1 + local.get $1 i64.clz i32.wrap_i64 - local.set $4 - local.get $2 - local.get $4 + local.tee $5 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $7 + local.get $4 i32.const 1 - local.get $7 + local.get $4 select i32.const 1075 i32.sub - local.tee $7 + local.tee $9 i32.const 1 i32.sub - local.get $4 + local.get $5 i32.sub local.set $4 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i64.const 4503599627370496 i64.eq i32.const 1 @@ -4113,7 +4198,7 @@ i64.shl i64.const 1 i64.sub - local.get $7 + local.get $9 local.get $5 i32.sub local.get $4 @@ -4164,95 +4249,86 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow + local.tee $6 + i64.const 4294967295 + i64.and + local.set $1 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_plus local.tee $3 i64.const 32 i64.shr_u - local.set $2 + local.tee $7 + i64.mul + local.get $1 + local.get $7 + i64.mul + local.get $1 local.get $3 i64.const 4294967295 i64.and local.tee $3 - global.get $~lib/util/number/_frc_plus - local.tee $6 + i64.mul i64.const 32 i64.shr_u - local.tee $11 - i64.mul + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add local.get $3 local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and - local.tee $12 - i64.mul + i64.add + i64.const 2147483647 + i64.add i64.const 32 i64.shr_u i64.add - local.set $6 + i64.const 1 + i64.sub + local.set $3 local.get $8 i32.const 1 i32.shl i32.const 3920 i32.add + local.get $6 + local.get $2 local.get $2 - local.get $1 - local.get $1 i64.clz - i32.wrap_i64 - local.tee $5 - i64.extend_i32_s i64.shl - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u - local.tee $10 - i64.mul - local.get $3 - local.get $10 + local.tee $7 i64.mul - local.get $3 local.get $1 - i64.const 4294967295 - i64.and - local.tee $1 + local.get $7 i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $10 - i64.const 32 - i64.shr_u - i64.add local.get $1 local.get $2 - i64.mul - local.get $10 i64.const 4294967295 i64.and - i64.add - i64.const 2147483647 - i64.add + local.tee $2 + i64.mul i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $9 - local.get $7 - local.get $5 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $2 - local.get $11 - i64.mul - local.get $6 + local.tee $7 i64.const 32 i64.shr_u i64.add local.get $2 - local.get $12 - i64.mul local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and i64.add @@ -4261,42 +4337,40 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $1 + local.get $3 local.get $4 - local.get $9 + global.get $~lib/util/number/_exp_pow i32.add i32.const -64 i32.sub - local.get $1 - local.get $2 + local.get $3 + local.get $6 global.get $~lib/util/number/_frc_minus - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u - local.tee $6 + local.tee $3 i64.mul + local.get $1 local.get $3 - local.get $6 i64.mul - local.get $3 local.get $1 + local.get $2 i64.const 4294967295 i64.and - local.tee $3 + local.tee $1 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $3 - i64.mul local.get $1 + local.get $6 + i64.mul + local.get $2 i64.const 4294967295 i64.and i64.add @@ -4570,7 +4644,7 @@ i32.const 0 i32.store offset=16 i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4592,13 +4666,13 @@ unreachable end i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -4630,7 +4704,7 @@ i32.const 3680 i32.store offset=8 i32.const 1 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -4643,7 +4717,7 @@ i32.const 3680 i32.store offset=8 i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -5077,7 +5151,7 @@ i32.const 1088 i32.store i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -5117,7 +5191,7 @@ i32.const 5104 i32.store offset=12 i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -5172,7 +5246,7 @@ unreachable end i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -5231,7 +5305,7 @@ unreachable end i32.const 2 - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -5290,7 +5364,7 @@ i32.store local.get $0 i32.load - call $~lib/util/number/itoa32 + call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -5376,120 +5450,6 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5580 - i32.lt_s - if - i32.const 21984 - i32.const 22032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2032 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - select - local.tee $2 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) (func $templateliteral/Ref#constructor (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat index f27d104813..f7dd8b1fac 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.optimized.wat @@ -107,8 +107,8 @@ i32.and i32.eq if - local.get $0 global.get $~lib/rt/itcms/iter + local.get $0 i32.eq if local.get $0 @@ -128,17 +128,18 @@ end block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 + local.tee $1 i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.eqz if i32.const 0 - local.get $0 + local.get $1 i32.const 18140 i32.lt_u - local.get $0 + local.get $1 i32.load offset=8 select i32.eqz @@ -152,7 +153,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $0 + local.get $1 i32.load offset=8 local.tee $1 i32.eqz @@ -164,29 +165,31 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.store offset=8 local.get $1 - local.get $2 local.get $1 i32.load offset=4 i32.const 3 i32.and + local.get $3 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $2 + local.set $3 local.get $0 - i32.load offset=12 local.tee $1 + i32.load offset=12 + local.tee $2 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $1 + local.get $2 + local.tee $0 i32.const 1728 i32.load i32.gt_u @@ -198,7 +201,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 3 i32.shl i32.const 1732 @@ -213,28 +216,28 @@ else i32.const 2 end - local.set $3 - local.get $2 + local.set $0 + local.get $3 i32.load offset=8 - local.set $1 + local.set $2 + local.get $1 local.get $0 - local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.or i32.store offset=4 - local.get $2 - local.get $0 + local.get $3 + local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 @@ -342,8 +345,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -351,11 +352,12 @@ 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 $2 local.get $3 i32.const 4 @@ -363,6 +365,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -374,17 +377,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -590,7 +593,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -598,6 +600,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -613,7 +616,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -621,6 +623,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -651,12 +654,12 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner0 + block $break|0 block $case2|0 block $case1|0 block $case0|0 global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $folding-inner0 + br_table $case0|0 $case1|0 $case2|0 $break|0 end i32.const 1 global.set $~lib/rt/itcms/state @@ -665,7 +668,7 @@ call $~lib/rt/itcms/visitRoots global.get $~lib/rt/itcms/toSpace global.set $~lib/rt/itcms/iter - br $folding-inner0 + return end global.get $~lib/rt/itcms/white i32.eqz @@ -703,7 +706,7 @@ i32.const 20 i32.add call $~lib/rt/__visit_members - br $folding-inner0 + return end local.get $0 i32.load offset=4 @@ -794,7 +797,7 @@ i32.const 2 global.set $~lib/rt/itcms/state end - br $folding-inner0 + return end global.get $~lib/rt/itcms/iter local.tee $0 @@ -851,13 +854,15 @@ global.get $~lib/rt/tlsf/ROOT i32.eqz if + i32.const 0 + local.set $0 memory.size - local.tee $0 + local.tee $1 i32.const 1 i32.lt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -875,11 +880,11 @@ i32.const 0 i32.store loop $for-loop|0 - local.get $1 + local.get $0 i32.const 23 i32.lt_u if - local.get $1 + local.get $0 i32.const 2 i32.shl i32.const 18144 @@ -887,14 +892,14 @@ i32.const 0 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 i32.const 16 i32.lt_u if - local.get $0 local.get $1 + local.get $0 i32.const 4 i32.shl i32.add @@ -904,17 +909,17 @@ i32.add i32.const 0 i32.store offset=96 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -1145,8 +1150,6 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -1156,27 +1159,27 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 1056 i32.store loop $while-continue|0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 i32.const 10 i32.lt_s if global.get $~lib/memory/__stack_pointer i32.const 1088 i32.store offset=4 - local.get $0 + local.get $1 i32.const 10 i32.gt_s if diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 2887713ff9..fa5a1ce0a0 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -2,10 +2,10 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -80,7 +80,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -94,18 +94,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -113,20 +110,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -139,33 +136,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -315,16 +312,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1792 i32.load i32.gt_u @@ -336,7 +333,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1796 @@ -352,26 +349,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -480,8 +477,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -489,11 +484,12 @@ 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 $2 local.get $3 i32.const 4 @@ -501,6 +497,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -512,17 +509,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -728,7 +725,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -736,6 +732,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -751,7 +748,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -759,6 +755,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -813,11 +810,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1696 @@ -841,11 +838,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1696 @@ -1005,17 +1002,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1075,15 +1072,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1211,12 +1208,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1298,240 +1293,6 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-continue|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 4 - memory.size - local.tee $0 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $1 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $1 - local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $1 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.tee $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $typeof/SomeClass @@ -1578,6 +1339,10 @@ ) (func $start:typeof (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1976,8 +1741,234 @@ local.tee $0 i32.const 0 i32.store + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $1 + loop $do-continue|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $1 + local.get $1 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $2 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $1 + local.get $2 + i32.lt_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 $3 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $2 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $2 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $2 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 4 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $4 + local.get $1 + local.get $4 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $0 - call $~lib/rt/itcms/__new + local.get $1 + i32.const 20 + i32.add local.tee $0 i32.store global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index 31a2c156cb..1aeb19a782 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -32,43 +32,42 @@ unreachable end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -77,28 +76,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -106,8 +105,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -118,14 +117,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -135,7 +134,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -145,32 +144,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -181,27 +180,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -243,16 +242,14 @@ local.set $3 i32.const 3 global.set $~argumentsLength - i32.const 1216 - local.get $3 local.get $0 i32.const 4 i32.add local.tee $0 - call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.set $3 - local.get $0 + i32.const 1216 local.get $3 + local.get $0 + call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.add local.tee $0 i32.const 40 diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index e24aed1e12..4308b4ba23 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -365,13 +365,13 @@ i32.const 1831565813 i32.add local.tee $0 + i32.const 1 + i32.or + local.get $0 local.get $0 i32.const 15 i32.shr_u i32.xor - local.get $0 - i32.const 1 - i32.or i32.mul local.tee $0 local.get $0 @@ -397,13 +397,13 @@ i32.const 1831565813 i32.add local.tee $0 + i32.const 1 + i32.or + local.get $0 local.get $0 i32.const 15 i32.shr_u i32.xor - local.get $0 - i32.const 1 - i32.or i32.mul local.tee $0 local.get $0 diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index c2588b9f7f..1d6a9d3568 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -8,7 +8,7 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_i64_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i64 i32 i64 i32) (result i32))) (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) @@ -53,43 +53,42 @@ unreachable end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -98,28 +97,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -127,8 +126,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -139,14 +138,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -156,7 +155,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -166,32 +165,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -202,27 +201,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -547,8 +546,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -556,11 +553,12 @@ 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 $2 local.get $3 i32.const 4 @@ -568,6 +566,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -579,17 +578,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -795,7 +794,6 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -803,6 +801,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -818,7 +817,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -826,6 +824,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -880,11 +879,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1216 @@ -908,11 +907,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1216 @@ -1057,13 +1056,13 @@ i32.const 536870910 i32.lt_u if - local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub @@ -1103,10 +1102,10 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $2 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -1115,7 +1114,6 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.get $2 @@ -1124,6 +1122,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1137,12 +1136,12 @@ i32.and local.tee $1 if (result i32) - local.get $0 local.get $1 i32.ctz local.tee $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=4 local.tee $2 @@ -1155,7 +1154,6 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 local.get $2 i32.ctz local.get $1 @@ -1164,6 +1162,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 else @@ -1171,87 +1170,89 @@ end end ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) (local $7 i64) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) (local $12 i64) - local.get $3 + (local $13 i64) + local.get $2 local.get $1 i64.sub - local.set $9 - local.get $3 + local.set $10 + local.get $2 i64.const 1 i32.const 0 - local.get $4 + local.get $3 i32.sub - local.tee $10 + local.tee $11 i64.extend_i32_s local.tee $1 i64.shl - local.tee $11 + local.tee $12 i64.const 1 i64.sub - local.tee $12 + local.tee $13 i64.and local.set $7 - local.get $3 + local.get $2 local.get $1 i64.shr_u i32.wrap_i64 - local.tee $2 - local.set $4 - local.get $2 + local.tee $6 + local.set $3 + local.get $6 i32.const 100000 i32.lt_u if (result i32) - local.get $4 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $4 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $4 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $4 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $4 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $4 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $4 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.set $8 + local.set $9 loop $while-continue|0 - local.get $8 + local.get $9 i32.const 0 i32.gt_s if @@ -1267,243 +1268,249 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + local.get $9 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $2 + local.get $6 i32.const 1000000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 100000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 100000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 10000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 10000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 1000000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 1000000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 100000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 100000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 10000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 10000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 1000 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 1000 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 100 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 100 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 + local.get $6 i32.const 10 i32.div_u - local.set $4 - local.get $2 + local.set $3 + local.get $6 i32.const 10 i32.rem_u - local.set $2 + local.set $6 br $break|1 end - local.get $2 - local.set $4 + local.get $6 + local.set $3 i32.const 0 - local.set $2 + local.set $6 br $break|1 end i32.const 0 - local.set $4 + local.set $3 end - local.get $4 - local.get $6 + local.get $3 + local.get $5 i32.or if + local.get $5 + local.tee $8 + i32.const 1 + i32.add + local.set $5 local.get $0 - local.get $6 + local.get $8 i32.const 1 i32.shl i32.add - local.get $4 + local.get $3 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 end - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 + local.set $9 local.get $7 - local.get $2 + local.get $6 i64.extend_i32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl i64.add local.tee $1 - local.get $5 + local.get $4 i64.le_u if - local.get $8 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $9 i32.const 2 i32.shl i32.const 2200 i32.add i64.load32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl - local.set $3 + local.set $2 local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $6 i32.load16_u - local.set $4 + local.set $3 loop $while-continue|3 - local.get $3 - local.get $5 + local.get $2 + local.get $4 local.get $1 i64.sub i64.le_u i32.const 0 local.get $1 - local.get $9 + local.get $10 i64.lt_u select if (result i32) i32.const 1 - local.get $9 + local.get $10 local.get $1 i64.sub local.get $1 - local.get $3 + local.get $2 i64.add local.tee $7 - local.get $9 + local.get $10 i64.sub i64.gt_u local.get $7 - local.get $9 + local.get $10 i64.lt_u select else i32.const 0 end if - local.get $4 + local.get $3 i32.const 1 i32.sub - local.set $4 + local.set $3 local.get $1 - local.get $3 + local.get $2 i64.add local.set $1 br $while-continue|3 end end - local.get $2 - local.get $4 - i32.store16 local.get $6 + local.get $3 + i32.store16 + local.get $5 return end br $while-continue|0 end end - local.get $10 + local.get $11 i64.extend_i32_s local.set $1 loop $while-continue|4 - local.get $5 + local.get $4 i64.const 10 i64.mul - local.set $5 + local.set $4 local.get $7 i64.const 10 i64.mul - local.tee $3 + local.tee $2 local.get $1 i64.shr_u local.tee $7 - local.get $6 + local.get $5 i64.extend_i32_s i64.or i64.const 0 i64.ne if + local.get $5 + local.tee $3 + i32.const 1 + i32.add + local.set $5 local.get $0 - local.get $6 + local.get $3 i32.const 1 i32.shl i32.add @@ -1514,32 +1521,28 @@ i32.const 48 i32.add i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 end - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 - local.get $5 - local.get $3 - local.get $12 + local.set $9 + local.get $4 + local.get $2 + local.get $13 i64.and local.tee $7 i64.le_u br_if $while-continue|4 end - local.get $8 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $7 local.set $1 - local.get $9 + local.get $10 i32.const 0 - local.get $8 + local.get $9 i32.sub i32.const 2 i32.shl @@ -1547,41 +1550,41 @@ i32.add i64.load32_u i64.mul - local.set $3 + local.set $2 local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $6 i32.load16_u - local.set $4 + local.set $3 loop $while-continue|6 - local.get $11 - local.get $5 + local.get $12 + local.get $4 local.get $1 i64.sub i64.le_u i32.const 0 local.get $1 - local.get $3 + local.get $2 i64.lt_u select if (result i32) i32.const 1 - local.get $3 + local.get $2 local.get $1 i64.sub local.get $1 - local.get $11 + local.get $12 i64.add local.tee $7 - local.get $3 + local.get $2 i64.sub i64.gt_u - local.get $3 + local.get $2 local.get $7 i64.gt_u select @@ -1589,21 +1592,21 @@ i32.const 0 end if - local.get $4 + local.get $3 i32.const 1 i32.sub - local.set $4 + local.set $3 local.get $1 - local.get $11 + local.get $12 i64.add local.set $1 br $while-continue|6 end end - local.get $2 - local.get $4 - i32.store16 local.get $6 + local.get $3 + i32.store16 + local.get $5 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1768,29 +1771,27 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - local.tee $4 i32.const 2 i32.add + local.tee $3 + i32.const 1 + i32.add local.set $0 local.get $1 - local.tee $3 i32.const 2 i32.add + local.tee $4 + i32.const 1 + i32.add local.set $1 - local.get $4 local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 3 i32.sub @@ -1812,25 +1813,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 24 - i32.shr_u local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 24 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=9 local.tee $3 i32.const 8 i32.shl + local.get $4 + i32.const 24 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -1903,25 +1904,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 16 - i32.shr_u local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 16 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=10 local.tee $3 i32.const 16 i32.shl + local.get $4 + i32.const 16 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -1990,25 +1991,25 @@ i32.or i32.store local.get $0 - local.get $3 - i32.const 8 - i32.shr_u local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - i32.or - i32.store offset=4 - local.get $0 local.get $3 i32.const 8 i32.shr_u + i32.or + i32.store offset=4 + local.get $0 local.get $1 i32.load offset=11 local.tee $3 i32.const 24 i32.shl + local.get $4 + i32.const 8 + i32.shr_u i32.or i32.store offset=8 local.get $0 @@ -2048,143 +2049,129 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2211,63 +2198,57 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2294,23 +2275,21 @@ i32.load8_u i32.store8 local.get $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.add - local.tee $0 + local.set $0 local.get $1 - i32.const 1 + local.tee $3 + i32.const 2 i32.add - local.tee $1 - i32.load8_u - i32.store8 + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $0 - i32.const 1 - i32.add - local.tee $0 local.get $1 - i32.const 1 - i32.add - local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2567,13 +2546,13 @@ i32.const 10000 i32.div_u local.set $1 - local.get $0 local.get $2 i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 i32.const 100 @@ -2602,13 +2581,13 @@ i32.const 100 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 100 @@ -2628,12 +2607,12 @@ i32.const 10 i32.ge_u if - local.get $0 local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 2 @@ -2643,12 +2622,12 @@ i32.load i32.store else - local.get $0 local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl + local.get $0 i32.add local.get $1 i32.const 48 @@ -2999,18 +2978,20 @@ (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) - (local $4 i64) + (local $4 i32) (local $5 i32) (local $6 i64) (local $7 i64) - (local $8 i32) + (local $8 i64) (local $9 i32) (local $10 i32) - (local $11 i32) + (local $11 i64) + (local $12 i64) + (local $13 i64) local.get $1 f64.const 0 f64.lt - local.tee $10 + local.tee $9 if (result f64) local.get $0 i32.const 45 @@ -3027,66 +3008,68 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $9 + local.set $5 + local.get $2 + i64.const 4503599627370495 + i64.and + local.get $5 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and i64.add - local.tee $3 + local.set $2 + local.get $5 + i32.const 1 + local.get $5 + select + i32.const 1075 + i32.sub + local.tee $5 + i32.const 1 + i32.sub + local.get $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $2 - local.get $2 + local.tee $3 i64.clz i32.wrap_i64 - local.tee $8 + local.tee $4 + i32.sub + local.set $10 + local.get $3 + local.get $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $9 - i32.const 1 - local.get $9 - select - i32.const 1075 - i32.sub - local.tee $9 - i32.const 1 - i32.sub - local.get $8 - i32.sub - local.set $8 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $5 + local.tee $4 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 local.get $5 + local.get $4 i32.sub - local.get $8 + local.get $10 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $8 + local.get $10 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $8 + local.tee $5 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -3095,9 +3078,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $5 + local.tee $4 local.get $1 - local.get $5 + local.get $4 f64.convert_i32_s f64.ne i32.add @@ -3105,59 +3088,84 @@ i32.shr_s i32.const 1 i32.add - local.tee $5 + local.tee $4 i32.const 3 i32.shl - local.tee $11 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $11 + local.get $10 i32.const 1328 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $5 + local.get $4 i32.const 1 i32.shl i32.const 2024 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow + local.get $2 + local.get $2 + i64.clz + i64.shl + local.tee $3 + i64.const 4294967295 + i64.and + local.set $12 global.get $~lib/util/number/_frc_pow + local.tee $11 + i64.const 4294967295 + i64.and + local.set $2 + local.get $3 + i64.const 32 + i64.shr_u + local.set $13 + local.get $11 + i64.const 32 + i64.shr_u + local.set $3 + local.get $2 + local.get $13 + i64.mul + local.get $2 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $11 + global.get $~lib/util/number/_frc_plus local.tee $6 i64.const 4294967295 i64.and - local.set $2 + local.set $7 + local.get $2 local.get $6 i64.const 32 i64.shr_u local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $4 - i64.const 32 - i64.shr_u - local.tee $7 i64.mul local.get $2 local.get $7 i64.mul - local.get $2 - local.get $4 - i64.const 4294967295 - i64.and - local.tee $4 - i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.set $8 + local.get $3 + local.get $6 + i64.mul + local.get $8 i64.const 32 i64.shr_u i64.add - local.get $4 - local.get $6 - i64.mul + local.get $3 local.get $7 + i64.mul + local.get $8 i64.const 4294967295 i64.and i64.add @@ -3168,46 +3176,42 @@ i64.add i64.const 1 i64.sub - local.set $4 - local.get $0 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u + local.set $6 + global.get $~lib/util/number/_frc_minus local.tee $7 - i64.mul + i64.const 4294967295 + i64.and + local.set $8 local.get $2 local.get $7 + i64.const 32 + i64.shr_u + local.tee $7 i64.mul local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 + local.get $8 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $7 + local.set $2 + local.get $9 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 + local.get $3 + local.get $13 + i64.mul + local.get $11 i64.const 32 i64.shr_u i64.add local.get $3 - local.get $6 + local.get $12 i64.mul - local.get $7 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -3216,48 +3220,24 @@ i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $5 - local.get $9 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $4 + local.get $6 local.get $5 - local.get $8 + global.get $~lib/util/number/_exp_pow i32.add i32.const -64 i32.sub - local.get $4 local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $4 - i64.mul - local.get $2 - local.get $4 - i64.mul - local.get $2 local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 + local.get $7 i64.mul + local.get $2 i64.const 32 i64.shr_u i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul local.get $3 + local.get $8 + i64.mul + local.get $2 i64.const 4294967295 i64.and i64.add @@ -3269,13 +3249,13 @@ i64.const 1 i64.add i64.sub - local.get $10 + local.get $9 call $~lib/util/number/genDigits - local.get $10 + local.get $9 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $10 + local.get $9 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -3360,15 +3340,15 @@ i32.load i32.const 1056 i32.add - local.set $8 + local.set $10 loop $while-continue|0 - local.get $8 local.get $9 - i32.gt_u + local.get $10 + i32.lt_u if local.get $9 i32.load16_u - local.tee $10 + local.tee $7 i32.const 128 i32.lt_u if (result i32) @@ -3376,7 +3356,7 @@ i32.const 1 i32.add else - local.get $10 + local.get $7 i32.const 2048 i32.lt_u if (result i32) @@ -3384,13 +3364,13 @@ i32.const 2 i32.add else - local.get $8 + local.get $10 local.get $9 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $10 + local.get $7 i32.const 64512 i32.and i32.const 55296 @@ -3443,7 +3423,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $10 + local.tee $8 local.get $6 i32.const 1073741820 i32.gt_u @@ -3455,7 +3435,6 @@ call $~lib/wasi/index/abort unreachable end - local.get $10 local.get $6 i32.const 12 i32.le_u @@ -3475,6 +3454,8 @@ local.tee $7 i32.eqz if + memory.size + local.tee $9 local.get $6 i32.const 536870910 i32.lt_u @@ -3493,14 +3474,13 @@ local.get $6 end i32.const 4 - memory.size - local.tee $9 + local.get $8 + i32.load offset=1568 + local.get $9 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $10 - i32.load offset=1568 i32.ne i32.shl i32.add @@ -3510,10 +3490,8 @@ i32.and i32.const 16 i32.shr_u - local.set $8 - local.get $9 - local.get $8 - local.get $8 + local.tee $7 + local.get $7 local.get $9 i32.lt_s select @@ -3521,7 +3499,7 @@ i32.const 0 i32.lt_s if - local.get $8 + local.get $7 memory.grow i32.const 0 i32.lt_s @@ -3529,7 +3507,7 @@ unreachable end end - local.get $10 + local.get $8 local.get $9 i32.const 16 i32.shl @@ -3537,7 +3515,7 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $10 + local.get $8 local.get $6 call $~lib/rt/tlsf/searchBlock local.tee $7 @@ -3565,7 +3543,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $10 + local.get $8 local.get $7 call $~lib/rt/tlsf/removeBlock local.get $7 @@ -3589,7 +3567,7 @@ i32.and local.get $6 i32.sub - local.tee $8 + local.tee $10 i32.const 16 i32.ge_u if @@ -3606,13 +3584,13 @@ i32.add i32.add local.tee $6 - local.get $8 + local.get $10 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $10 + local.get $8 local.get $6 call $~lib/rt/tlsf/insertBlock else @@ -3644,26 +3622,26 @@ local.get $7 i32.const 4 i32.add - local.tee $7 + local.tee $8 i32.const 8 i32.add - local.tee $10 + local.tee $7 i32.const 4 i32.add local.set $9 - local.get $7 + local.get $8 local.get $9 i32.store local.get $9 i64.const 9071406388179572 i64.store - local.get $7 + local.get $8 i32.const 7 i32.store offset=4 i32.const 2 - local.get $7 + local.get $8 i32.const 1 - local.get $10 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop i32.const 1052 @@ -3673,16 +3651,16 @@ local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 + local.get $8 i32.const 1056 local.get $6 local.get $9 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.store offset=4 i32.const 2 - local.get $7 + local.get $8 i32.const 1 - local.get $10 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 @@ -3693,127 +3671,127 @@ local.get $9 i32.const 1 i32.add - local.tee $8 + local.tee $10 local.get $1 call $~lib/util/number/dtoa_buffered local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $10 local.get $6 - local.get $8 + local.get $10 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $8 i32.const 1 - local.get $10 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 1 i32.gt_s if - local.get $8 + local.get $10 local.get $2 call $~lib/util/number/dtoa_buffered local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $10 local.get $6 - local.get $8 + local.get $10 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $8 i32.const 1 - local.get $10 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 2 i32.gt_s if - local.get $8 + local.get $10 local.get $3 call $~lib/util/number/dtoa_buffered local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $10 local.get $6 - local.get $8 + local.get $10 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $8 i32.const 1 - local.get $10 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 3 i32.gt_s if - local.get $8 + local.get $10 local.get $4 call $~lib/util/number/dtoa_buffered local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $10 local.get $6 - local.get $8 + local.get $10 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $8 i32.const 1 - local.get $10 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 4 i32.gt_s if - local.get $8 + local.get $10 local.get $5 call $~lib/util/number/dtoa_buffered local.set $0 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $8 + local.get $10 local.get $0 - local.get $8 + local.get $10 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $8 i32.const 1 - local.get $10 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop end end end end - local.get $8 + local.get $10 i32.const 1 i32.sub else @@ -3821,16 +3799,16 @@ end i32.const 10 i32.store8 - local.get $7 + local.get $8 i32.const 1 i32.store offset=4 i32.const 2 - local.get $7 + local.get $8 i32.const 1 - local.get $10 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop - local.get $7 + local.get $8 i32.const 19024 i32.ge_u if @@ -3840,20 +3818,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $7 + local.get $8 i32.const 4 i32.sub - local.set $10 - local.get $7 + local.set $7 + local.get $8 i32.const 15 i32.and i32.const 1 - local.get $7 + local.get $8 select if (result i32) i32.const 1 else - local.get $10 + local.get $7 i32.load i32.const 1 i32.and @@ -3866,13 +3844,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $10 - local.get $10 + local.get $7 + local.get $7 i32.load i32.const 1 i32.or i32.store - local.get $10 + local.get $7 call $~lib/rt/tlsf/insertBlock end ) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index e0f1361365..cd79f2650a 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (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))) @@ -169,16 +169,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $2 + local.get $1 i32.const 1488 i32.load i32.gt_u @@ -190,7 +190,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -206,26 +206,26 @@ i32.const 2 end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 - local.get $2 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount @@ -334,8 +334,6 @@ local.get $5 i32.store offset=4 end - local.get $1 - local.get $0 local.get $2 local.get $3 i32.const 4 @@ -343,11 +341,12 @@ 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 $2 local.get $3 i32.const 4 @@ -355,6 +354,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $4 i32.store offset=96 @@ -366,17 +366,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -582,7 +582,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -590,6 +589,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 local.set $4 @@ -605,7 +605,6 @@ local.get $1 i32.store offset=4 end - local.get $0 local.get $3 local.get $5 i32.const 4 @@ -613,6 +612,7 @@ i32.add i32.const 2 i32.shl + local.get $0 i32.add local.get $1 i32.store offset=96 @@ -667,11 +667,11 @@ i32.load offset=1568 local.tee $2 if - local.get $1 local.get $2 i32.const 4 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -695,11 +695,11 @@ local.set $1 end else - local.get $1 local.get $0 i32.const 1572 i32.add - i32.lt_u + local.get $1 + i32.gt_u if i32.const 0 i32.const 1440 @@ -859,17 +859,17 @@ i32.and local.set $0 loop $while-continue|1 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if local.get $0 global.set $~lib/rt/itcms/iter - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -929,15 +929,15 @@ i32.and local.set $0 loop $while-continue|2 - local.get $0 global.get $~lib/rt/itcms/toSpace + local.get $0 i32.ne if - local.get $1 local.get $0 i32.load offset=4 i32.const 3 i32.and + local.get $1 i32.ne if local.get $0 @@ -1065,12 +1065,10 @@ end local.get $1 local.tee $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1152,345 +1150,110 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $start:while (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-continue|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 + i32.const 10 + local.set $0 + loop $while-continue|0 + local.get $0 + if local.get $0 - global.get $~lib/rt/itcms/threshold + i32.const 1 i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl + local.set $0 + local.get $2 + i32.const 1 i32.add - global.set $~lib/rt/itcms/threshold + local.set $2 + br $while-continue|0 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $0 if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz + local.get $2 + i32.const 10 + i32.ne if - i32.const 4 - memory.size - local.tee $0 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $1 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - memory.grow i32.const 0 - i32.lt_s + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + i32.const 10 + local.set $0 + loop $while-continue|00 + local.get $0 if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + loop $while-continue|1 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|1 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - memory.grow - i32.const 0 - i32.lt_s + i32.const 9 + i32.ne if + i32.const 0 + i32.const 1056 + i32.const 30 + i32.const 5 + call $~lib/builtins/abort unreachable end - end - local.get $1 - local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $1 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable + br $while-continue|00 end end local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u if i32.const 0 - i32.const 1440 - i32.const 498 - i32.const 14 + i32.const 1056 + i32.const 32 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $1 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.tee $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - ) - (func $start:while - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 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 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 10 - local.set $0 - loop $while-continue|00 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - i32.const 1 - i32.add - local.set $3 - loop $while-continue|1 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|1 - end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 30 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - br $while-continue|00 - end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.ne + i32.const 1 + i32.ne if i32.const 0 i32.const 1056 @@ -1511,7 +1274,7 @@ unreachable end i32.const 0 - local.set $3 + local.set $2 i32.const 1 local.set $0 loop $while-continue|01 @@ -1522,10 +1285,10 @@ local.set $0 local.get $1 if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.add - local.tee $3 + local.tee $2 else i32.const 0 end @@ -1542,7 +1305,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 1 i32.ne if @@ -1582,11 +1345,13 @@ i32.const 1 i32.add local.tee $0 + local.set $1 + local.get $0 i32.const 10 i32.ne br_if $while-continue|03 end - local.get $0 + local.get $1 i32.const 10 i32.ne if @@ -1757,7 +1522,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1772,28 +1537,28 @@ i32.store local.get $1 call $while/Ref#constructor - local.tee $2 + local.tee $0 i32.store loop $while-continue|06 call $while/Ref#constructor if block $while-break|07 - local.get $0 + local.get $2 i32.const 1 i32.add - local.tee $0 + local.tee $2 i32.const 10 i32.eq if i32.const 0 - local.set $2 + local.set $0 br $while-break|07 end br $while-continue|06 end end end - local.get $0 + local.get $2 i32.const 10 i32.ne if @@ -1804,7 +1569,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 if i32.const 0 i32.const 1056 @@ -1830,36 +1595,36 @@ end i32.const 0 local.set $0 - loop $while-continue|09 + loop $while-continue|010 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 1 i32.lt_s - br_if $while-continue|09 + br_if $while-continue|010 end global.get $~lib/rt/itcms/state i32.const 0 i32.gt_s if - loop $while-continue|010 + loop $while-continue|012 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|010 + br $while-continue|012 end end end call $~lib/rt/itcms/step drop - loop $while-continue|111 + loop $while-continue|113 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|111 + br $while-continue|113 end end global.get $~lib/rt/itcms/total @@ -1915,6 +1680,10 @@ ) (func $while/Ref#constructor (result i32) (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1931,17 +1700,243 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $4 i32.const 0 i32.store - local.get $0 - call $~lib/rt/itcms/__new + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $0 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $0 + local.get $0 + local.get $1 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $0 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $1 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $1 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $1 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $4 + local.get $0 + i32.const 20 + i32.add + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) )