diff --git a/src/module.ts b/src/module.ts index 53239a43b3..064e438866 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1506,7 +1506,14 @@ 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"); + passes.push("simplify-globals-optimizing"); + passes.push("remove-unused-brs"); + passes.push("remove-unused-names"); + passes.push("merge-blocks"); } if (optimizeLevel >= 3) { passes.push("flatten"); @@ -1518,10 +1525,6 @@ export class Module { passes.push("local-cse"); passes.push("reorder-locals"); } - if (optimizeLevel >= 2 || shrinkLevel >= 1) { - passes.push("rse"); - passes.push("vacuum"); - } // FIXME: see issue #1288 // if (usesARC) { // if (optimizeLevel < 3) { @@ -1537,16 +1540,16 @@ export class Module { passes.push("remove-unused-brs"); passes.push("remove-unused-names"); passes.push("inlining-optimizing"); - if (optimizeLevel >= 2 || shrinkLevel >= 1) { - passes.push("pick-load-signs"); - passes.push("simplify-globals-optimizing"); - } if (optimizeLevel >= 3 || shrinkLevel >= 2) { passes.push("precompute-propagate"); } else { passes.push("precompute"); } passes.push("vacuum"); + if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("pick-load-signs"); + passes.push("simplify-globals-optimizing"); + } if (optimizeLevel >= 3 && shrinkLevel <= 1) { passes.push("licm"); } diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index 12db290bd5..77b7d23daf 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -50,6 +50,10 @@ local.get $0 i32.reinterpret_f32 local.tee $1 + i32.const -2147483648 + i32.and + local.set $4 + local.get $1 i32.const 23 i32.shr_u i32.const 255 @@ -63,10 +67,6 @@ f32.div return end - local.get $1 - i32.const -2147483648 - i32.and - local.set $4 block $folding-inner0 local.get $1 i32.const 1 @@ -191,6 +191,10 @@ local.get $0 i64.reinterpret_f64 local.tee $1 + i64.const 63 + i64.shr_u + local.set $4 + local.get $1 i64.const 52 i64.shr_u i64.const 2047 @@ -204,10 +208,6 @@ f64.div return end - local.get $1 - i64.const 63 - i64.shr_u - local.set $4 block $folding-inner0 local.get $1 i64.const 1 diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index 212f05ac19..b8197dbcf8 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -80,17 +80,6 @@ global.set $comma/b i32.const 2 global.set $comma/a - global.get $comma/b - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end loop $for-loop|0 local.get $0 global.get $comma/a diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index 9678b0e24c..565621a65f 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -128,15 +128,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -160,23 +158,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -191,25 +189,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -221,24 +219,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -247,7 +245,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -257,7 +255,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -411,15 +409,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -667,16 +663,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -688,18 +684,19 @@ unreachable end i32.const 1216 - local.tee $0 + local.set $1 + i32.const 1216 i32.const 0 i32.store i32.const 2784 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 1216 @@ -713,10 +710,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -731,10 +728,10 @@ 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 @@ -747,7 +744,7 @@ i32.const 1216 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1189,14 +1186,14 @@ global.set $do/ran i32.const 0 local.set $0 - loop $do-continue|06 + loop $do-continue|03 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 10 i32.ne - br_if $do-continue|06 + br_if $do-continue|03 end local.get $0 i32.const 10 @@ -1217,7 +1214,7 @@ local.set $1 i32.const 0 local.set $0 - loop $do-continue|03 + loop $do-continue|04 local.get $1 i32.const 1 i32.add @@ -1234,7 +1231,7 @@ i32.rem_s br_if $do-continue|1 end - br $do-continue|03 + br $do-continue|04 end end local.get $1 @@ -1265,7 +1262,7 @@ global.set $do/ran call $do/Ref#constructor local.set $1 - loop $do-continue|04 + loop $do-continue|05 local.get $2 i32.const 1 i32.add @@ -1288,7 +1285,7 @@ end local.get $0 local.tee $1 - br_if $do-continue|04 + br_if $do-continue|05 end local.get $2 i32.const 10 @@ -1330,7 +1327,7 @@ local.set $2 call $do/Ref#constructor local.set $1 - loop $do-continue|05 + loop $do-continue|06 block $do-break|0 local.get $2 i32.const 1 @@ -1352,7 +1349,7 @@ local.tee $0 call $~lib/rt/pure/__release local.get $0 - br_if $do-continue|05 + br_if $do-continue|06 end end local.get $2 diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index b46078dcd4..a67611b82c 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -53,15 +53,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -85,23 +83,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -116,25 +114,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -146,24 +144,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -172,7 +170,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -182,7 +180,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -336,15 +334,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -592,16 +588,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -613,18 +609,19 @@ unreachable end i32.const 1568 - local.tee $0 + local.set $1 + i32.const 1568 i32.const 0 i32.store i32.const 3136 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 1568 @@ -638,10 +635,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -656,10 +653,10 @@ 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 @@ -672,7 +669,7 @@ i32.const 1568 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 @@ -709,6 +706,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -725,11 +723,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -1379,10 +1377,10 @@ local.get $6 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $4 local.get $5 i32.const 3 i32.and - local.get $4 i32.or i32.store local.get $1 @@ -1783,18 +1781,16 @@ local.get $0 i32.load offset=4 local.tee $1 + i32.const -2147483648 + i32.and + i32.eqz + i32.const 0 + local.get $1 i32.const 1879048192 i32.and i32.const 536870912 i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end + select if local.get $0 local.get $1 @@ -1834,19 +1830,17 @@ local.tee $5 i32.load offset=4 local.tee $2 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.const 0 + local.get $2 i32.const 1879048192 i32.and i32.const 805306368 i32.eq - if (result i32) - local.get $2 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end + select if local.get $5 call $~lib/rt/pure/markGray @@ -2106,14 +2100,11 @@ block $case3|0 block $case2|0 block $case1|0 - local.get $1 - i32.const 1 - i32.ne - if + block $case0|0 local.get $1 - i32.const 2 + i32.const 1 i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 end local.get $0 call $~lib/rt/pure/decrement diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index 89dd49b021..8680bc669c 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -125,15 +125,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -157,23 +155,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -188,25 +186,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -218,24 +216,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -244,7 +242,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -254,7 +252,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -408,15 +406,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -664,16 +660,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -685,18 +681,19 @@ unreachable end i32.const 1216 - local.tee $0 + local.set $1 + i32.const 1216 i32.const 0 i32.store i32.const 2784 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 1216 @@ -710,10 +707,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -728,10 +725,10 @@ 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 @@ -744,7 +741,7 @@ i32.const 1216 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1046,7 +1043,6 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) i32.const 0 global.set $for/ran loop $for-loop|0 @@ -1163,12 +1159,12 @@ global.set $for/ran i32.const 10 local.set $0 - loop $for-loop|04 + loop $for-loop|03 local.get $0 i32.const 1 i32.sub local.tee $0 - br_if $for-loop|04 + br_if $for-loop|03 end local.get $0 if @@ -1185,14 +1181,14 @@ global.set $for/ran i32.const 0 local.set $0 - loop $for-loop|06 + loop $for-loop|04 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 10 i32.ne - br_if $for-loop|06 + br_if $for-loop|04 end local.get $0 i32.const 10 @@ -1215,7 +1211,7 @@ global.set $for/ran i32.const 0 local.set $0 - loop $for-loop|07 + loop $for-loop|05 local.get $0 i32.const 10 i32.lt_s @@ -1224,7 +1220,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|07 + br $for-loop|05 end end local.get $0 @@ -1265,7 +1261,7 @@ global.set $for/ran call $for/Ref#constructor local.set $0 - loop $for-loop|03 + loop $for-loop|06 local.get $0 if local.get $2 @@ -1290,7 +1286,7 @@ end local.get $1 local.set $0 - br $for-loop|03 + br $for-loop|06 end end local.get $2 @@ -1329,42 +1325,44 @@ end i32.const 0 global.set $for/ran + i32.const 0 + local.set $2 call $for/Ref#constructor call $for/Ref#constructor - local.set $1 + local.set $0 call $~lib/rt/pure/__release - loop $for-loop|05 + loop $for-loop|07 block $for-break0 call $for/Ref#constructor - local.tee $0 + local.tee $1 call $~lib/rt/pure/__release - local.get $0 + local.get $1 if - local.get $3 + local.get $2 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 10 i32.eq if - local.get $1 + local.get $0 if - local.get $1 + local.get $0 call $~lib/rt/pure/__release end i32.const 0 - local.set $1 + local.set $0 br $for-break0 end call $for/Ref#constructor - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.set $1 - br $for-loop|05 + local.set $0 + br $for-loop|07 end end end - local.get $3 + local.get $2 i32.const 10 i32.ne if @@ -1375,7 +1373,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 if i32.const 0 i32.const 1040 @@ -1386,7 +1384,7 @@ end i32.const 1 global.set $for/ran - local.get $1 + local.get $0 call $~lib/rt/pure/__release global.get $for/ran i32.eqz diff --git a/tests/compiler/if.optimized.wat b/tests/compiler/if.optimized.wat index 5e7036cc7b..313c758fd6 100644 --- a/tests/compiler/if.optimized.wat +++ b/tests/compiler/if.optimized.wat @@ -27,9 +27,8 @@ ) (func $if/ifAlwaysReturns (param $0 i32) (result i32) local.get $0 - if (result i32) - i32.const 1 - else + i32.eqz + if i32.const 1072 i32.const 1040 i32.const 37 @@ -37,6 +36,7 @@ call $~lib/builtins/abort unreachable end + i32.const 1 ) (func $~start i32.const 0 diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 8804cd6553..9c33c3adf4 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -60,15 +60,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -92,23 +90,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -123,25 +121,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -153,24 +151,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -179,7 +177,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -189,7 +187,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -343,15 +341,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -599,16 +595,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -620,18 +616,19 @@ unreachable end i32.const 1232 - local.tee $0 + local.set $1 + i32.const 1232 i32.const 0 i32.store i32.const 2800 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 1232 @@ -645,10 +642,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -663,10 +660,10 @@ 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 @@ -679,7 +676,7 @@ i32.const 1232 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -692,6 +689,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -708,11 +706,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -1163,18 +1161,17 @@ (local $2 i32) local.get $1 local.get $0 - local.tee $2 i32.load - local.tee $0 + local.tee $2 i32.ne if local.get $1 call $~lib/rt/pure/__retain drop - local.get $0 + local.get $2 call $~lib/rt/pure/__release end - local.get $2 + local.get $0 local.get $1 i32.store ) diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index c6a03f1537..4913000374 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -45,15 +45,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -77,23 +75,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -108,25 +106,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -138,24 +136,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -164,7 +162,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -174,7 +172,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -328,15 +326,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -584,16 +580,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -605,18 +601,19 @@ unreachable end i32.const 1312 - local.tee $0 + local.set $1 + i32.const 1312 i32.const 0 i32.store i32.const 2880 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 1312 @@ -630,10 +627,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -648,10 +645,10 @@ 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 @@ -664,7 +661,7 @@ i32.const 1312 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index 1419f32b1a..717e09b3a0 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -46,15 +46,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -78,23 +76,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -109,25 +107,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -139,24 +137,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -165,7 +163,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -175,7 +173,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -329,15 +327,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -585,16 +581,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -606,18 +602,19 @@ unreachable end i32.const 1232 - local.tee $0 + local.set $1 + i32.const 1232 i32.const 0 i32.store i32.const 2800 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 1232 @@ -631,10 +628,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -649,10 +646,10 @@ 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 @@ -665,7 +662,7 @@ i32.const 1232 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index 1077a81d75..ce3a0a2d5d 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -43,15 +43,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -75,23 +73,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -106,25 +104,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -136,24 +134,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -162,7 +160,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -172,7 +170,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -326,15 +324,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -582,16 +578,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -603,18 +599,19 @@ unreachable end i32.const 1232 - local.tee $0 + local.set $1 + i32.const 1232 i32.const 0 i32.store i32.const 2800 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 1232 @@ -628,10 +625,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -646,10 +643,10 @@ 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 @@ -662,7 +659,7 @@ i32.const 1232 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -962,24 +959,16 @@ call $~lib/rt/pure/decrement end ) - (func $start:logical - (local $0 f64) + (func $~start + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) call $logical/Obj#constructor - local.tee $4 + local.tee $1 call $~lib/rt/pure/__retain - local.tee $2 - if (result i32) - i32.const 1 - else - i32.const 0 - end - local.get $2 + local.tee $0 call $~lib/rt/pure/__release + local.get $0 i32.eqz if i32.const 0 @@ -990,16 +979,11 @@ unreachable end call $logical/Obj#constructor - local.tee $2 + local.tee $0 call $~lib/rt/pure/__retain - local.tee $5 - if (result i32) - i32.const 1 - else - i32.const 0 - end - local.get $5 + local.tee $2 call $~lib/rt/pure/__release + local.get $2 i32.eqz if i32.const 0 @@ -1009,14 +993,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release ) - (func $~start - call $start:logical - ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) (local $2 i32) diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index 2e104b2226..638f2185d5 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -29,11 +29,10 @@ i32.const 1 i32.eq local.set $1 - loop $while-continue|0 (result i32) + loop $while-continue|0 local.get $1 - if (result i32) - i32.const 1 - else + i32.eqz + if local.get $0 i32.const 2 i32.ne @@ -46,6 +45,7 @@ unreachable end end + i32.const 1 ) (func $loop-flow/forAny (param $0 i32) (result i32) (local $1 i32) @@ -53,11 +53,10 @@ i32.const 1 i32.eq local.set $1 - loop $for-loop|0 (result i32) + loop $for-loop|0 local.get $1 - if (result i32) - i32.const 1 - else + i32.eqz + if local.get $0 i32.const 2 i32.eq @@ -72,6 +71,7 @@ br $for-loop|0 end end + i32.const 1 ) (func $loop-flow/doAny (param $0 i32) (result i32) (local $1 i32) @@ -79,11 +79,10 @@ i32.const 1 i32.eq local.set $1 - loop $do-continue|0 (result i32) + loop $do-continue|0 local.get $1 - if (result i32) - i32.const 1 - else + i32.eqz + if local.get $0 i32.const 2 i32.ne @@ -96,6 +95,7 @@ unreachable end end + i32.const 1 ) (func $loop-flow/whileThrow (result i32) i32.const 1088 diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 48c9c1ad62..ba0ca816f5 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -48,15 +48,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -80,23 +78,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -111,25 +109,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -141,24 +139,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -167,7 +165,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -177,7 +175,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -331,15 +329,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -587,16 +583,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -608,18 +604,19 @@ unreachable end i32.const 1392 - local.tee $0 + local.set $1 + i32.const 1392 i32.const 0 i32.store i32.const 2960 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 1392 @@ -633,10 +630,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -651,10 +648,10 @@ 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 @@ -667,7 +664,7 @@ i32.const 1392 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index 8952f746c9..c55ff71226 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -160,22 +160,13 @@ block $break|2 block $case2|2 block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 + block $case0|2 + local.get $0 i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 + i32.and + i32.const 1 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $break|2 end local.get $1 i32.load diff --git a/tests/compiler/memory.optimized.wat b/tests/compiler/memory.optimized.wat index b9acc22e85..bf670ac375 100644 --- a/tests/compiler/memory.optimized.wat +++ b/tests/compiler/memory.optimized.wat @@ -158,17 +158,6 @@ global.set $memory/ptr i32.const 1167 global.set $memory/ptr - global.get $memory/ptr - i32.const 1167 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end i32.const 1169 global.set $memory/ptr i32.const 1169 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 23ae2c7979..91bd1ef485 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -349,8 +349,8 @@ ) (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) (local $6 i32) - (local $7 i32) - (local $8 i64) + (local $7 i64) + (local $8 i32) (local $9 i64) (local $10 i32) (local $11 i64) @@ -372,17 +372,17 @@ i64.sub local.tee $12 i64.and - local.set $8 + local.set $7 local.get $3 local.get $10 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $4 + local.set $8 loop $while-continue|0 - local.get $4 + local.get $8 i32.const 0 i32.gt_s if @@ -397,115 +397,112 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 - i32.const 10 - i32.ne - if - local.get $4 + block $case0|1 + 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 $case10|1 + 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 $7 + local.get $2 i32.const 1000000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 - local.set $2 + local.get $2 + local.set $4 i32.const 0 - local.set $7 + local.set $2 br $break|1 end i32.const 0 - local.set $2 + local.set $4 end - local.get $2 + local.get $4 local.get $6 i32.or if @@ -514,7 +511,7 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $4 i32.const 65535 i32.and i32.const 48 @@ -525,12 +522,12 @@ i32.add local.set $6 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 - local.get $8 + local.set $8 local.get $7 + local.get $2 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -540,11 +537,11 @@ local.get $5 i64.le_u if - local.get $4 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $4 + local.get $8 i32.const 2 i32.shl i32.const 2440 @@ -563,7 +560,7 @@ i32.add local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|3 i32.const 1 local.get $9 @@ -572,11 +569,11 @@ local.get $1 local.get $3 i64.add - local.tee $8 + local.tee $7 local.get $9 i64.sub i64.gt_u - local.get $8 + local.get $7 local.get $9 i64.lt_u select @@ -593,10 +590,10 @@ select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 local.get $3 i64.add @@ -605,7 +602,7 @@ end end local.get $0 - local.get $4 + local.get $2 i32.store16 local.get $6 return @@ -621,13 +618,13 @@ i64.const 10 i64.mul local.set $5 - local.get $8 + local.get $7 i64.const 10 i64.mul local.tee $3 local.get $1 i64.shr_u - local.tee $8 + local.tee $7 local.get $6 i64.extend_i32_s i64.or @@ -639,7 +636,7 @@ i32.const 1 i32.shl i32.add - local.get $8 + local.get $7 i32.wrap_i64 i32.const 65535 i32.and @@ -651,27 +648,27 @@ i32.add local.set $6 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 local.get $3 local.get $12 i64.and - local.tee $8 + local.tee $7 local.get $5 i64.ge_u br_if $while-continue|4 end - local.get $4 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 local.set $1 local.get $9 i32.const 0 - local.get $4 + local.get $8 i32.sub i32.const 2 i32.shl @@ -689,7 +686,7 @@ i32.add local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|6 i32.const 1 local.get $3 @@ -698,11 +695,11 @@ local.get $1 local.get $11 i64.add - local.tee $8 + local.tee $7 local.get $3 i64.sub i64.gt_u - local.get $8 + local.get $7 local.get $3 i64.lt_u select @@ -719,10 +716,10 @@ select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 local.get $11 i64.add @@ -731,7 +728,7 @@ end end local.get $0 - local.get $4 + local.get $2 i32.store16 local.get $6 ) @@ -926,18 +923,16 @@ return end local.get $1 - local.get $1 local.get $2 i32.add local.tee $3 + i32.const 21 i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end + i32.const 0 + local.get $1 + local.get $3 + i32.le_s + select if (result i32) loop $for-loop|0 local.get $1 @@ -1158,6 +1153,7 @@ (local $2 i64) (local $3 i64) (local $4 f64) + (local $5 i64) i32.const -4 global.set $~lib/util/number/_K i32.const 1920 @@ -1166,28 +1162,39 @@ i32.const 2352 i32.load16_s global.set $~lib/util/number/_exp_pow - local.get $0 - local.get $0 global.get $~lib/util/number/_frc_pow local.tee $2 i64.const 32 i64.shr_u - local.tee $3 - i64.const 31 - i64.shl + local.set $3 local.get $2 i64.const 4294967295 i64.and local.tee $2 i64.const 31 i64.shl + local.get $2 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.set $1 + local.get $0 + local.get $0 + local.get $3 + i64.const 31 + i64.shl + local.get $2 + i64.const 31 + i64.shl i64.const 0 i64.add - local.tee $1 + local.tee $5 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $5 i64.const 4294967295 i64.and i64.const 0 @@ -1204,16 +1211,7 @@ local.get $3 i64.const 31 i64.shl - local.get $2 - i64.const 31 - i64.shl - local.get $2 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $1 + local.get $1 i64.const 32 i64.shr_u i64.add @@ -1359,7 +1357,6 @@ select ) (func $~lib/number/F32.isInteger (param $0 f32) (result i32) - (local $1 i32) local.get $0 f32.trunc local.get $0 @@ -1385,7 +1382,6 @@ select ) (func $~lib/number/F64.isInteger (param $0 f64) (result i32) - (local $1 i32) local.get $0 f64.trunc local.get $0 diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 8ed9a4db9e..42a5e9eaa8 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -52,15 +52,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -84,23 +82,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -115,25 +113,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -145,24 +143,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -171,7 +169,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -181,7 +179,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -335,15 +333,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -591,16 +587,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -612,18 +608,19 @@ unreachable end i32.const 1440 - local.tee $0 + local.set $1 + i32.const 1440 i32.const 0 i32.store i32.const 3008 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 1440 @@ -637,10 +634,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -655,10 +652,10 @@ 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 @@ -671,7 +668,7 @@ i32.const 1440 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -684,6 +681,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -700,11 +698,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u diff --git a/tests/compiler/rc/local-init.optimized.wat b/tests/compiler/rc/local-init.optimized.wat index 85d41f12f6..a3e22c6a0e 100644 --- a/tests/compiler/rc/local-init.optimized.wat +++ b/tests/compiler/rc/local-init.optimized.wat @@ -43,15 +43,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -75,23 +73,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -106,25 +104,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -136,24 +134,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -162,7 +160,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -172,7 +170,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -326,15 +324,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -582,16 +578,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -603,18 +599,19 @@ unreachable end i32.const 1200 - local.tee $0 + local.set $1 + i32.const 1200 i32.const 0 i32.store i32.const 2768 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 1200 @@ -628,10 +625,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -646,10 +643,10 @@ 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 @@ -662,7 +659,7 @@ i32.const 1200 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat index f06157dc9d..ed8cf871e1 100644 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-and-mismatch.optimized.wat @@ -43,15 +43,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -75,23 +73,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -106,25 +104,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -136,24 +134,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -162,7 +160,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -172,7 +170,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -326,15 +324,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -582,16 +578,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -603,18 +599,19 @@ unreachable end i32.const 1184 - local.tee $0 + local.set $1 + i32.const 1184 i32.const 0 i32.store i32.const 2752 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 1184 @@ -628,10 +625,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -646,10 +643,10 @@ 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 @@ -662,7 +659,7 @@ i32.const 1184 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat index e6aaa14ed7..28dd6e3978 100644 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-or-mismatch.optimized.wat @@ -43,15 +43,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -75,23 +73,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -106,25 +104,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -136,24 +134,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -162,7 +160,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -172,7 +170,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -326,15 +324,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -582,16 +578,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -603,18 +599,19 @@ unreachable end i32.const 1184 - local.tee $0 + local.set $1 + i32.const 1184 i32.const 0 i32.store i32.const 2752 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 1184 @@ -628,10 +625,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -646,10 +643,10 @@ 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 @@ -662,7 +659,7 @@ i32.const 1184 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/rc/optimize.optimized.wat b/tests/compiler/rc/optimize.optimized.wat index f5a7756869..995319d8fa 100644 --- a/tests/compiler/rc/optimize.optimized.wat +++ b/tests/compiler/rc/optimize.optimized.wat @@ -133,15 +133,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -165,23 +163,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -196,25 +194,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -226,24 +224,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -252,7 +250,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -262,7 +260,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -416,15 +414,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -672,16 +668,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -693,18 +689,19 @@ unreachable end i32.const 1216 - local.tee $0 + local.set $1 + i32.const 1216 i32.const 0 i32.store i32.const 2784 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 1216 @@ -718,10 +715,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -736,10 +733,10 @@ 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 @@ -752,7 +749,7 @@ i32.const 1216 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat index cd89413c86..1082f8c402 100644 --- a/tests/compiler/rc/rereturn.optimized.wat +++ b/tests/compiler/rc/rereturn.optimized.wat @@ -46,15 +46,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -78,23 +76,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -109,25 +107,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -139,24 +137,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -165,7 +163,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -175,7 +173,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -329,15 +327,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -585,16 +581,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -606,18 +602,19 @@ unreachable end i32.const 1232 - local.tee $0 + local.set $1 + i32.const 1232 i32.const 0 i32.store i32.const 2800 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 1232 @@ -631,10 +628,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -649,10 +646,10 @@ 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 @@ -665,7 +662,7 @@ i32.const 1232 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -678,6 +675,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -694,11 +692,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u diff --git a/tests/compiler/rc/ternary-mismatch.optimized.wat b/tests/compiler/rc/ternary-mismatch.optimized.wat index 5d516a991a..e2dcc99097 100644 --- a/tests/compiler/rc/ternary-mismatch.optimized.wat +++ b/tests/compiler/rc/ternary-mismatch.optimized.wat @@ -45,15 +45,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -77,23 +75,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -108,25 +106,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -138,24 +136,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -164,7 +162,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -174,7 +172,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -328,15 +326,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -584,16 +580,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -605,18 +601,19 @@ unreachable end i32.const 1184 - local.tee $0 + local.set $1 + i32.const 1184 i32.const 0 i32.store i32.const 2752 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 1184 @@ -630,10 +627,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -648,10 +645,10 @@ 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 @@ -664,7 +661,7 @@ i32.const 1184 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 78726945aa..81ca43caa9 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -364,8 +364,8 @@ ) (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) (local $6 i32) - (local $7 i32) - (local $8 i64) + (local $7 i64) + (local $8 i32) (local $9 i64) (local $10 i32) (local $11 i64) @@ -387,17 +387,17 @@ i64.sub local.tee $12 i64.and - local.set $8 + local.set $7 local.get $3 local.get $10 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $4 + local.set $8 loop $while-continue|0 - local.get $4 + local.get $8 i32.const 0 i32.gt_s if @@ -412,115 +412,112 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 - i32.const 10 - i32.ne - if - local.get $4 + block $case0|1 + 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 $case10|1 + 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 $7 + local.get $2 i32.const 1000000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 - local.set $2 + local.get $2 + local.set $4 i32.const 0 - local.set $7 + local.set $2 br $break|1 end i32.const 0 - local.set $2 + local.set $4 end - local.get $2 + local.get $4 local.get $6 i32.or if @@ -529,7 +526,7 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $4 i32.const 65535 i32.and i32.const 48 @@ -540,12 +537,12 @@ i32.add local.set $6 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 - local.get $8 + local.set $8 local.get $7 + local.get $2 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -555,11 +552,11 @@ local.get $5 i64.le_u if - local.get $4 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $4 + local.get $8 i32.const 2 i32.shl i32.const 2584 @@ -578,7 +575,7 @@ i32.add local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|3 i32.const 1 local.get $9 @@ -587,11 +584,11 @@ local.get $1 local.get $3 i64.add - local.tee $8 + local.tee $7 local.get $9 i64.sub i64.gt_u - local.get $8 + local.get $7 local.get $9 i64.lt_u select @@ -608,10 +605,10 @@ select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 local.get $3 i64.add @@ -620,7 +617,7 @@ end end local.get $0 - local.get $4 + local.get $2 i32.store16 local.get $6 return @@ -636,13 +633,13 @@ i64.const 10 i64.mul local.set $5 - local.get $8 + local.get $7 i64.const 10 i64.mul local.tee $3 local.get $1 i64.shr_u - local.tee $8 + local.tee $7 local.get $6 i64.extend_i32_s i64.or @@ -654,7 +651,7 @@ i32.const 1 i32.shl i32.add - local.get $8 + local.get $7 i32.wrap_i64 i32.const 65535 i32.and @@ -666,27 +663,27 @@ i32.add local.set $6 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 local.get $3 local.get $12 i64.and - local.tee $8 + local.tee $7 local.get $5 i64.ge_u br_if $while-continue|4 end - local.get $4 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 local.set $1 local.get $9 i32.const 0 - local.get $4 + local.get $8 i32.sub i32.const 2 i32.shl @@ -704,7 +701,7 @@ i32.add local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|6 i32.const 1 local.get $3 @@ -713,11 +710,11 @@ local.get $1 local.get $11 i64.add - local.tee $8 + local.tee $7 local.get $3 i64.sub i64.gt_u - local.get $8 + local.get $7 local.get $3 i64.lt_u select @@ -734,10 +731,10 @@ select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 local.get $11 i64.add @@ -746,7 +743,7 @@ end end local.get $0 - local.get $4 + local.get $2 i32.store16 local.get $6 ) @@ -941,18 +938,16 @@ return end local.get $1 - local.get $1 local.get $2 i32.add local.tee $3 + i32.const 21 i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end + i32.const 0 + local.get $1 + local.get $3 + i32.le_s + select if (result i32) loop $for-loop|0 local.get $1 @@ -1172,6 +1167,7 @@ (local $1 i64) (local $2 i64) (local $3 i64) + (local $4 i64) i32.const -4 global.set $~lib/util/number/_K i32.const 2064 @@ -1180,28 +1176,39 @@ i32.const 2496 i32.load16_s global.set $~lib/util/number/_exp_pow - local.get $0 - local.get $0 global.get $~lib/util/number/_frc_pow - local.tee $2 + local.tee $1 i64.const 32 i64.shr_u - local.tee $3 - i64.const 31 - i64.shl - local.get $2 + local.set $3 + local.get $1 i64.const 4294967295 i64.and - local.tee $2 + local.tee $1 + i64.const 31 + i64.shl + local.get $1 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.set $2 + local.get $0 + local.get $0 + local.get $3 + i64.const 31 + i64.shl + local.get $1 i64.const 31 i64.shl i64.const 0 i64.add - local.tee $1 + local.tee $4 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $4 i64.const 4294967295 i64.and i64.const 0 @@ -1219,19 +1226,10 @@ i64.const 31 i64.shl local.get $2 - i64.const 31 - i64.shl - local.get $2 - i64.const 10 - i64.shl i64.const 32 i64.shr_u i64.add - local.tee $1 - i64.const 32 - i64.shr_u - i64.add - local.get $1 + local.get $2 i64.const 4294967295 i64.and local.get $3 @@ -1245,31 +1243,31 @@ i64.add i64.const 1 i64.sub - local.tee $1 + local.tee $2 local.get $0 i32.const 3 i32.add - local.get $1 + local.get $2 local.get $3 i64.const 2147483647 i64.mul - local.get $2 + local.get $1 i64.const 2147483647 i64.mul - local.get $2 + local.get $1 i64.const 4294966784 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 $3 i64.const 4294966784 i64.mul - local.get $1 + local.get $2 i64.const 4294967295 i64.and i64.add diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index b6e217bab8..7b40aaa0fe 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -435,41 +435,41 @@ select ) (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) - (local $7 i32) + (local $7 i64) (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) (local $12 i64) (local $13 i64) local.get $3 local.get $1 i64.sub - local.set $9 + local.set $8 local.get $3 i64.const 1 i32.const 0 local.get $4 i32.sub - local.tee $10 + local.tee $11 i64.extend_i32_s i64.shl - local.tee $11 + local.tee $10 i64.const 1 i64.sub local.tee $12 i64.and - local.set $8 + local.set $7 local.get $3 - local.get $10 + local.get $11 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $4 + local.set $9 loop $while-continue|0 - local.get $4 + local.get $9 i32.const 0 i32.gt_s if @@ -484,116 +484,112 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 - local.tee $2 - i32.const 10 - i32.ne - if - local.get $2 + block $case0|1 + 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 $case10|1 + 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 $7 + local.get $2 i32.const 1000000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 - local.set $2 + local.get $2 + local.set $4 i32.const 0 - local.set $7 + local.set $2 br $break|1 end i32.const 0 - local.set $2 + local.set $4 end - local.get $2 + local.get $4 local.get $6 i32.or if @@ -602,7 +598,7 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $4 i32.const 65535 i32.and i32.const 48 @@ -613,14 +609,14 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 - local.get $8 + local.set $9 local.get $7 + local.get $2 i64.extend_i32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl i64.add @@ -628,20 +624,20 @@ local.get $5 i64.le_u if - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $4 + local.get $9 i32.const 2 i32.shl i32.const 2280 i32.add i64.load32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl - local.set $3 + local.set $10 local.get $0 local.get $6 i32.const 1 @@ -649,52 +645,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|3 i32.const 1 - local.get $9 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $3 + local.get $10 i64.add - local.get $9 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 local.get $3 - i64.add - local.get $9 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $3 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $9 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $3 + local.get $10 i64.add local.set $1 br $while-continue|3 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 return @@ -702,7 +697,7 @@ br $while-continue|0 end end - local.get $10 + local.get $11 i64.extend_i32_s local.set $13 loop $while-continue|4 (result i32) @@ -710,7 +705,7 @@ i64.const 10 i64.mul local.set $5 - local.get $8 + local.get $7 i64.const 10 i64.mul local.tee $3 @@ -740,26 +735,26 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 + local.set $9 local.get $3 local.get $12 i64.and - local.tee $8 + local.tee $7 local.get $5 i64.ge_u br_if $while-continue|4 - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 local.set $1 - local.get $9 + local.get $8 i32.const 0 - local.get $4 + local.get $9 i32.sub i32.const 2 i32.shl @@ -767,7 +762,7 @@ i32.add i64.load32_u i64.mul - local.set $3 + local.set $8 local.get $0 local.get $6 i32.const 1 @@ -775,52 +770,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|6 i32.const 1 - local.get $3 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $11 + local.get $10 i64.add - local.get $3 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 - local.get $11 - i64.add local.get $3 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $11 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $3 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $11 + local.get $10 i64.add local.set $1 br $while-continue|6 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 end @@ -1043,18 +1037,16 @@ return end local.get $1 - local.get $1 local.get $2 i32.add local.tee $3 + i32.const 21 i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end + i32.const 0 + local.get $1 + local.get $3 + i32.le_s + select if (result i32) loop $for-loop|0 local.get $1 @@ -1275,15 +1267,15 @@ (local $3 i64) (local $4 i32) (local $5 i64) - (local $6 i32) + (local $6 i64) (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) local.get $1 f64.const 0 f64.lt - local.tee $8 + local.tee $9 if (result f64) local.get $0 i32.const 45 @@ -1294,60 +1286,60 @@ local.get $1 end i64.reinterpret_f64 - local.tee $3 + local.tee $2 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $3 + local.get $2 i64.const 4503599627370495 i64.and i64.add - local.tee $2 + local.tee $3 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i64.clz i32.wrap_i64 local.tee $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $6 + local.get $8 i32.const 1 - local.get $6 + local.get $8 select i32.const 1075 i32.sub - local.tee $6 + local.tee $8 i32.const 1 i32.sub local.get $4 i32.sub local.set $4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $9 + local.tee $10 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $6 - local.get $9 + local.get $8 + local.get $10 i32.sub local.get $4 i32.sub @@ -1380,10 +1372,10 @@ local.tee $4 i32.const 3 i32.shl - local.tee $9 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $9 + local.get $10 i32.const 1408 i32.add i64.load @@ -1396,52 +1388,40 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $6 i64.const 4294967295 i64.and - local.set $5 - local.get $0 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $2 + local.set $2 + local.get $6 i64.const 32 i64.shr_u - local.tee $7 - local.get $3 + local.tee $6 + global.get $~lib/util/number/_frc_plus + local.tee $5 i64.const 32 i64.shr_u - local.tee $10 + local.tee $7 i64.mul - local.get $5 + local.get $2 local.get $7 i64.mul local.get $2 + local.get $5 i64.const 4294967295 i64.and - local.tee $2 - local.get $5 + local.tee $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $10 - i64.mul local.get $5 + local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and i64.add @@ -1450,47 +1430,48 @@ i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $6 + i64.const 1 + i64.sub + local.set $5 local.get $0 - i32.sub + local.get $9 + i32.const 1 + i32.shl i32.add - i32.const -64 - i32.sub - global.get $~lib/util/number/_frc_plus - local.tee $2 - i64.const 32 - i64.shr_u - local.tee $5 + 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.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $10 - local.get $5 + local.get $2 + local.get $7 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and - local.tee $2 - local.get $10 + local.tee $3 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $7 + local.get $3 + local.get $6 i64.mul - local.get $5 + local.get $7 i64.const 4294967295 i64.and i64.add @@ -1499,36 +1480,36 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $2 + global.get $~lib/util/number/_exp_pow + local.tee $4 + local.get $8 + local.get $0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $5 local.get $4 global.get $~lib/util/number/_exp i32.add i32.const -64 i32.sub - local.get $2 + local.get $5 + local.get $6 global.get $~lib/util/number/_frc_minus - local.tee $2 + local.tee $3 i64.const 32 i64.shr_u local.tee $5 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 + local.get $2 local.get $5 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and local.tee $2 - local.get $3 i64.mul i64.const 32 i64.shr_u @@ -1538,7 +1519,7 @@ i64.shr_u i64.add local.get $2 - local.get $7 + local.get $6 i64.mul local.get $3 i64.const 4294967295 @@ -1552,13 +1533,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $9 call $~lib/util/number/genDigits - local.get $8 + local.get $9 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $9 i32.add ) (func $~lib/string/String#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index f54ad32f8d..86bb1d91ff 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -72,15 +72,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -104,23 +102,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -135,25 +133,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -165,24 +163,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -191,7 +189,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -201,7 +199,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -355,15 +353,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -611,16 +607,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -632,18 +628,19 @@ unreachable end i32.const 2880 - local.tee $0 + local.set $1 + i32.const 2880 i32.const 0 i32.store i32.const 4448 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 2880 @@ -657,10 +654,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -675,10 +672,10 @@ 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 @@ -691,7 +688,7 @@ i32.const 2880 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -704,6 +701,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -720,11 +718,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -1341,8 +1339,8 @@ ) (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) (local $6 i32) - (local $7 i32) - (local $8 i64) + (local $7 i64) + (local $8 i32) (local $9 i64) (local $10 i32) (local $11 i64) @@ -1364,17 +1362,17 @@ i64.sub local.tee $12 i64.and - local.set $8 + local.set $7 local.get $3 local.get $10 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $4 + local.set $8 loop $while-continue|0 - local.get $4 + local.get $8 i32.const 0 i32.gt_s if @@ -1389,115 +1387,112 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 - i32.const 10 - i32.ne - if - local.get $4 + block $case0|1 + 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 $case10|1 + 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 $7 + local.get $2 i32.const 1000000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 - local.set $2 + local.get $2 + local.set $4 i32.const 0 - local.set $7 + local.set $2 br $break|1 end i32.const 0 - local.set $2 + local.set $4 end - local.get $2 + local.get $4 local.get $6 i32.or if @@ -1506,7 +1501,7 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $4 i32.const 65535 i32.and i32.const 48 @@ -1517,12 +1512,12 @@ i32.add local.set $6 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 - local.get $8 + local.set $8 local.get $7 + local.get $2 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -1532,11 +1527,11 @@ local.get $5 i64.le_u if - local.get $4 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $4 + local.get $8 i32.const 2 i32.shl i32.const 2616 @@ -1555,7 +1550,7 @@ i32.add local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|3 i32.const 1 local.get $9 @@ -1564,11 +1559,11 @@ local.get $1 local.get $3 i64.add - local.tee $8 + local.tee $7 local.get $9 i64.sub i64.gt_u - local.get $8 + local.get $7 local.get $9 i64.lt_u select @@ -1585,10 +1580,10 @@ select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 local.get $3 i64.add @@ -1597,7 +1592,7 @@ end end local.get $0 - local.get $4 + local.get $2 i32.store16 local.get $6 return @@ -1613,13 +1608,13 @@ i64.const 10 i64.mul local.set $5 - local.get $8 + local.get $7 i64.const 10 i64.mul local.tee $3 local.get $1 i64.shr_u - local.tee $8 + local.tee $7 local.get $6 i64.extend_i32_s i64.or @@ -1631,7 +1626,7 @@ i32.const 1 i32.shl i32.add - local.get $8 + local.get $7 i32.wrap_i64 i32.const 65535 i32.and @@ -1643,27 +1638,27 @@ i32.add local.set $6 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 local.get $3 local.get $12 i64.and - local.tee $8 + local.tee $7 local.get $5 i64.ge_u br_if $while-continue|4 end - local.get $4 + local.get $8 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 local.set $1 local.get $9 i32.const 0 - local.get $4 + local.get $8 i32.sub i32.const 2 i32.shl @@ -1681,7 +1676,7 @@ i32.add local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|6 i32.const 1 local.get $3 @@ -1690,11 +1685,11 @@ local.get $1 local.get $11 i64.add - local.tee $8 + local.tee $7 local.get $3 i64.sub i64.gt_u - local.get $8 + local.get $7 local.get $3 i64.lt_u select @@ -1711,10 +1706,10 @@ select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 local.get $11 i64.add @@ -1723,7 +1718,7 @@ end end local.get $0 - local.get $4 + local.get $2 i32.store16 local.get $6 ) @@ -1918,18 +1913,16 @@ return end local.get $1 - local.get $1 local.get $2 i32.add local.tee $3 + i32.const 21 i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end + i32.const 0 + local.get $1 + local.get $3 + i32.le_s + select if (result i32) loop $for-loop|0 local.get $1 @@ -2150,6 +2143,7 @@ (local $2 i64) (local $3 i64) (local $4 f64) + (local $5 i64) i32.const -4 global.set $~lib/util/number/_K i32.const 2096 @@ -2158,28 +2152,39 @@ i32.const 2528 i32.load16_s global.set $~lib/util/number/_exp_pow - local.get $0 - local.get $0 global.get $~lib/util/number/_frc_pow local.tee $2 i64.const 32 i64.shr_u - local.tee $3 - i64.const 31 - i64.shl + local.set $3 local.get $2 i64.const 4294967295 i64.and local.tee $2 i64.const 31 i64.shl + local.get $2 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.set $1 + local.get $0 + local.get $0 + local.get $3 + i64.const 31 + i64.shl + local.get $2 + i64.const 31 + i64.shl i64.const 0 i64.add - local.tee $1 + local.tee $5 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $5 i64.const 4294967295 i64.and i64.const 0 @@ -2196,16 +2201,7 @@ local.get $3 i64.const 31 i64.shl - local.get $2 - i64.const 31 - i64.shl - local.get $2 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $1 + local.get $1 i64.const 32 i64.shr_u i64.add diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index d11b808cd8..686f1bd9d3 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -70,15 +70,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -102,23 +100,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -133,25 +131,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -163,24 +161,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -189,7 +187,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -199,7 +197,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -353,15 +351,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -609,16 +605,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -630,18 +626,19 @@ unreachable end i32.const 1664 - local.tee $0 + local.set $1 + i32.const 1664 i32.const 0 i32.store i32.const 3232 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 1664 @@ -655,10 +652,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -673,10 +670,10 @@ 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 @@ -689,7 +686,7 @@ i32.const 1664 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 @@ -726,6 +723,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -742,11 +740,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -1560,10 +1558,10 @@ local.get $6 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $4 local.get $5 i32.const 3 i32.and - local.get $4 i32.or i32.store local.get $1 @@ -1781,16 +1779,16 @@ i32.const 3 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=12 i32.const 12 @@ -1800,8 +1798,9 @@ i32.const 12 call $~lib/memory/memory.fill local.get $1 - local.tee $0 - local.get $3 + local.set $0 + local.get $1 + local.get $2 i32.load local.tee $4 i32.ne @@ -1812,23 +1811,23 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $3 + local.get $2 local.get $0 i32.store - local.get $3 + local.get $2 local.get $1 i32.store offset=4 - local.get $3 + local.get $2 i32.const 12 i32.store offset=8 - local.get $3 + local.get $2 i32.const 3 i32.store offset=12 - local.get $3 + local.get $2 call $~lib/array/Array#push - local.get $3 + local.get $2 call $~lib/array/Array#push - local.get $3 + local.get $2 i32.load offset=12 local.tee $1 i32.const 1 @@ -1841,7 +1840,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.load offset=4 local.get $1 i32.const 1 @@ -1852,25 +1851,25 @@ i32.add i32.load drop - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 call $~lib/rt/pure/__release i32.const 16 i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=12 i32.const 0 @@ -1880,8 +1879,9 @@ i32.const 0 call $~lib/memory/memory.fill local.get $1 - local.tee $0 - local.get $3 + local.set $0 + local.get $1 + local.get $2 i32.load local.tee $4 i32.ne @@ -1892,21 +1892,21 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $3 + local.get $2 local.get $0 i32.store - local.get $3 + local.get $2 local.get $1 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=12 - local.get $3 + local.get $2 loop $for-loop|0 - local.get $2 + local.get $3 i32.const 10 i32.lt_s if @@ -1914,16 +1914,16 @@ i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=12 i32.const 0 @@ -1933,8 +1933,9 @@ i32.const 0 call $~lib/memory/memory.fill local.get $1 - local.tee $0 - local.get $3 + local.set $0 + local.get $1 + local.get $2 i32.load local.tee $5 i32.ne @@ -1945,16 +1946,16 @@ local.get $5 call $~lib/rt/pure/__release end - local.get $3 + local.get $2 local.get $0 i32.store - local.get $3 + local.get $2 local.get $1 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=12 i32.const 0 @@ -1964,15 +1965,15 @@ i32.const 10 i32.lt_s if - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.load offset=12 local.tee $1 i32.const 1 i32.add local.tee $5 call $~lib/array/ensureSize - local.get $3 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 @@ -1981,7 +1982,7 @@ i32.const 1344 call $~lib/rt/pure/__retain i32.store - local.get $3 + local.get $2 local.get $5 i32.store offset=12 i32.const 1344 @@ -1993,12 +1994,12 @@ br $for-loop|1 end end - local.get $3 - call $~lib/rt/pure/__release local.get $2 + call $~lib/rt/pure/__release + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end @@ -2006,15 +2007,15 @@ i32.const 1360 i32.const 1392 call $~lib/string/String.__concat - local.tee $2 - call $~lib/rt/pure/__retain local.tee $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.const 1456 call $~lib/string/String.__concat - local.get $2 - call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release call $~lib/rt/pure/__release i32.const 4 i32.const 6 @@ -2027,111 +2028,113 @@ i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 - local.tee $0 + local.get $2 + local.set $0 + local.get $2 local.get $1 - local.tee $2 i32.load - local.tee $4 + local.tee $3 i32.ne if local.get $0 call $~lib/rt/pure/__retain local.set $0 - local.get $4 + local.get $3 call $~lib/rt/pure/__release end - local.get $2 + local.get $1 local.get $0 i32.store - local.get $2 + local.get $1 local.set $0 - local.get $3 - local.tee $2 - local.get $0 + local.get $2 + local.tee $3 + local.get $1 i32.load local.tee $4 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $3 i32.store local.get $0 - local.tee $2 - local.get $3 - local.tee $0 + local.set $3 + local.get $1 + local.get $2 i32.load - local.tee $4 + local.tee $0 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $3 + local.get $0 call $~lib/rt/pure/__release end - local.get $0 local.get $2 + local.get $3 i32.store local.get $1 - local.tee $2 - local.get $0 + local.tee $3 + local.get $2 i32.load - local.tee $4 + local.tee $0 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $3 + local.get $0 call $~lib/rt/pure/__release end - local.get $0 local.get $2 - i32.store local.get $3 + i32.store + local.get $2 + local.set $0 + local.get $2 local.get $1 - local.tee $2 i32.load - local.tee $4 + local.tee $3 i32.ne if local.get $0 call $~lib/rt/pure/__retain local.set $0 - local.get $4 + local.get $3 call $~lib/rt/pure/__release end - local.get $2 + local.get $1 local.get $0 i32.store local.get $1 - local.get $3 + local.tee $3 + local.get $2 i32.load local.tee $0 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release end - local.get $3 local.get $2 + local.get $3 i32.store local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $2 call $~lib/rt/pure/__release call $~lib/rt/pure/__collect ) @@ -2381,18 +2384,16 @@ local.get $0 i32.load offset=4 local.tee $1 + i32.const -2147483648 + i32.and + i32.eqz + i32.const 0 + local.get $1 i32.const 1879048192 i32.and i32.const 536870912 i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end + select if local.get $0 local.get $1 @@ -2432,19 +2433,17 @@ local.tee $5 i32.load offset=4 local.tee $2 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.const 0 + local.get $2 i32.const 1879048192 i32.and i32.const 805306368 i32.eq - if (result i32) - local.get $2 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end + select if local.get $5 call $~lib/rt/pure/markGray @@ -2547,14 +2546,11 @@ block $case3|0 block $case2|0 block $case1|0 - local.get $1 - i32.const 1 - i32.ne - if + block $case0|0 local.get $1 - i32.const 2 + i32.const 1 i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 end local.get $0 call $~lib/rt/pure/decrement diff --git a/tests/compiler/retain-return.optimized.wat b/tests/compiler/retain-return.optimized.wat index b6554497a6..2265222389 100644 --- a/tests/compiler/retain-return.optimized.wat +++ b/tests/compiler/retain-return.optimized.wat @@ -48,15 +48,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -80,23 +78,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -111,25 +109,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -141,24 +139,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -167,7 +165,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -177,7 +175,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -331,15 +329,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -587,16 +583,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -608,18 +604,19 @@ unreachable end i32.const 1376 - local.tee $0 + local.set $1 + i32.const 1376 i32.const 0 i32.store i32.const 2944 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 1376 @@ -633,10 +630,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -651,10 +648,10 @@ 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 @@ -667,7 +664,7 @@ i32.const 1376 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index f2717b2010..cad0f1fc39 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -68,15 +68,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -100,23 +98,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -131,25 +129,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -161,24 +159,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -187,7 +185,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -197,7 +195,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -351,15 +349,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -607,16 +603,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -628,18 +624,19 @@ unreachable end i32.const 1600 - local.tee $0 + local.set $1 + i32.const 1600 i32.const 0 i32.store i32.const 3168 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 1600 @@ -653,10 +650,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -671,10 +668,10 @@ 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 @@ -687,7 +684,7 @@ i32.const 1600 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -700,6 +697,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -716,11 +714,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -1334,55 +1332,56 @@ i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=12 i32.const 0 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 + local.tee $0 i32.const 0 call $~lib/memory/memory.fill + local.get $0 + local.set $1 + local.get $0 local.get $2 - local.tee $0 - local.get $3 i32.load - local.tee $1 + local.tee $3 i32.ne if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $3 call $~lib/rt/pure/__release end - local.get $3 - local.get $0 + local.get $2 + local.get $1 i32.store - local.get $3 local.get $2 + local.get $0 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=12 - local.get $3 + local.get $2 i32.load call $rt/finalize/expect - local.get $3 + local.get $2 call $rt/finalize/expect - local.get $3 + local.get $2 call $~lib/rt/pure/__release global.get $rt/finalize/expectedWriteIndex i32.const 2 @@ -1410,56 +1409,56 @@ i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 i32.const 0 i32.store i32.const 4 i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $0 - local.tee $1 local.get $2 + local.set $0 + local.get $2 + local.get $1 i32.load local.tee $3 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 + local.set $0 local.get $3 call $~lib/rt/pure/__release end - local.get $2 - local.tee $3 local.get $1 - i32.store - local.get $3 - local.tee $1 local.get $0 + i32.store + local.get $1 + local.tee $0 + local.get $2 i32.load local.tee $3 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 + local.set $0 local.get $3 call $~lib/rt/pure/__release end + local.get $2 local.get $0 - local.get $1 i32.store - local.get $0 - call $rt/finalize/expect local.get $2 call $rt/finalize/expect - local.get $2 + local.get $1 + call $rt/finalize/expect + local.get $1 call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release call $~lib/rt/pure/__collect global.get $rt/finalize/expectedWriteIndex @@ -2029,18 +2028,16 @@ local.get $0 i32.load offset=4 local.tee $1 + i32.const -2147483648 + i32.and + i32.eqz + i32.const 0 + local.get $1 i32.const 1879048192 i32.and i32.const 536870912 i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end + select if local.get $0 local.get $1 @@ -2079,19 +2076,17 @@ local.tee $5 i32.load offset=4 local.tee $2 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.const 0 + local.get $2 i32.const 1879048192 i32.and i32.const 805306368 i32.eq - if (result i32) - local.get $2 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end + select if local.get $5 call $~lib/rt/pure/markGray @@ -2193,14 +2188,11 @@ block $case3|0 block $case2|0 block $case1|0 - local.get $1 - i32.const 1 - i32.ne - if + block $case0|0 local.get $1 - i32.const 2 + i32.const 1 i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 end local.get $0 call $~lib/rt/pure/decrement diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat index 4b565d853b..b1cfbd7047 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/runtime-full.optimized.wat @@ -46,15 +46,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -78,23 +76,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -109,25 +107,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -139,24 +137,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -165,7 +163,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -175,7 +173,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -329,15 +327,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -585,16 +581,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -606,18 +602,19 @@ unreachable end i32.const 1216 - local.tee $0 + local.set $1 + i32.const 1216 i32.const 0 i32.store i32.const 2784 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 1216 @@ -631,10 +628,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -649,10 +646,10 @@ 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 @@ -665,7 +662,7 @@ i32.const 1216 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -678,6 +675,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -694,11 +692,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u diff --git a/tests/compiler/scoped.optimized.wat b/tests/compiler/scoped.optimized.wat index 001d9087e1..d9bbd8322b 100644 --- a/tests/compiler/scoped.optimized.wat +++ b/tests/compiler/scoped.optimized.wat @@ -5,7 +5,6 @@ (start $~start) (func $~start (local $0 i32) - (local $1 i32) loop $for-loop|0 local.get $0 i32.const 1 @@ -18,15 +17,17 @@ br $for-loop|0 end end + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $1 + local.get $0 i32.const 1 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index b585dc8b7d..0360098a44 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -98,15 +98,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -130,23 +128,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -161,25 +159,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -191,24 +189,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -217,7 +215,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -227,7 +225,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -381,15 +379,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -637,16 +633,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -658,18 +654,19 @@ unreachable end i32.const 1536 - local.tee $0 + local.set $1 + i32.const 1536 i32.const 0 i32.store i32.const 3104 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 1536 @@ -683,10 +680,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -701,10 +698,10 @@ 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 @@ -717,7 +714,7 @@ i32.const 1536 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -730,6 +727,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -746,11 +744,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 94c9216dca..afe414b4f6 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -429,15 +429,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -461,23 +459,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -492,25 +490,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -522,24 +520,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -548,7 +546,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -558,7 +556,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -712,15 +710,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -968,16 +964,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -989,18 +985,19 @@ unreachable end i32.const 11936 - local.tee $0 + local.set $1 + i32.const 11936 i32.const 0 i32.store i32.const 13504 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 11936 @@ -1014,10 +1011,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -1032,10 +1029,10 @@ 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 @@ -1048,7 +1045,7 @@ i32.const 11936 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 @@ -1085,6 +1082,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -1101,11 +1099,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -2384,10 +2382,10 @@ local.get $6 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $4 local.get $5 i32.const 3 i32.and - local.get $4 i32.or i32.store local.get $1 @@ -2881,16 +2879,14 @@ ) (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + local.get $2 local.get $0 i32.load offset=12 local.tee $3 - if (result i32) - local.get $2 - local.get $3 - i32.ge_s - else - i32.const 1 - end + i32.ge_s + i32.const 1 + local.get $3 + select if i32.const -1 return @@ -4198,7 +4194,6 @@ i32.xor ) (func $~lib/math/NativeMath.seedRandom (param $0 i64) - (local $1 i32) i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -6631,26 +6626,23 @@ (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 block $folding-inner0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 + i32.const 1 local.get $1 call $~lib/rt/pure/__retain local.tee $1 + i32.eqz + i32.const 1 + local.get $0 + i32.eqz + local.get $0 + local.get $1 i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.eqz - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end + select + select br_if $folding-inner0 local.get $0 call $~lib/string/String#get:length @@ -7686,41 +7678,41 @@ call $~lib/rt/pure/__release ) (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) - (local $7 i32) + (local $7 i64) (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) (local $12 i64) (local $13 i64) local.get $3 local.get $1 i64.sub - local.set $9 + local.set $8 local.get $3 i64.const 1 i32.const 0 local.get $4 i32.sub - local.tee $10 + local.tee $11 i64.extend_i32_s i64.shl - local.tee $11 + local.tee $10 i64.const 1 i64.sub local.tee $12 i64.and - local.set $8 + local.set $7 local.get $3 - local.get $10 + local.get $11 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $4 + local.set $9 loop $while-continue|0 - local.get $4 + local.get $9 i32.const 0 i32.gt_s if @@ -7735,116 +7727,112 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 - local.tee $2 - i32.const 10 - i32.ne - if - local.get $2 + block $case0|1 + 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 $case10|1 + 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 $7 + local.get $2 i32.const 1000000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 - local.set $2 + local.get $2 + local.set $4 i32.const 0 - local.set $7 + local.set $2 br $break|1 end i32.const 0 - local.set $2 + local.set $4 end - local.get $2 + local.get $4 local.get $6 i32.or if @@ -7853,7 +7841,7 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $4 i32.const 65535 i32.and i32.const 48 @@ -7864,14 +7852,14 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 - local.get $8 + local.set $9 local.get $7 + local.get $2 i64.extend_i32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl i64.add @@ -7879,20 +7867,20 @@ local.get $5 i64.le_u if - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $4 + local.get $9 i32.const 2 i32.shl i32.const 9896 i32.add i64.load32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl - local.set $3 + local.set $10 local.get $0 local.get $6 i32.const 1 @@ -7900,52 +7888,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|3 i32.const 1 - local.get $9 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $3 + local.get $10 i64.add - local.get $9 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 local.get $3 - i64.add - local.get $9 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $3 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $9 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $3 + local.get $10 i64.add local.set $1 br $while-continue|3 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 return @@ -7953,7 +7940,7 @@ br $while-continue|0 end end - local.get $10 + local.get $11 i64.extend_i32_s local.set $13 loop $while-continue|4 (result i32) @@ -7961,7 +7948,7 @@ i64.const 10 i64.mul local.set $5 - local.get $8 + local.get $7 i64.const 10 i64.mul local.tee $3 @@ -7991,26 +7978,26 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 + local.set $9 local.get $3 local.get $12 i64.and - local.tee $8 + local.tee $7 local.get $5 i64.ge_u br_if $while-continue|4 - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 local.set $1 - local.get $9 + local.get $8 i32.const 0 - local.get $4 + local.get $9 i32.sub i32.const 2 i32.shl @@ -8018,7 +8005,7 @@ i32.add i64.load32_u i64.mul - local.set $3 + local.set $8 local.get $0 local.get $6 i32.const 1 @@ -8026,52 +8013,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|6 i32.const 1 - local.get $3 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $11 + local.get $10 i64.add - local.get $3 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 - local.get $11 - i64.add local.get $3 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $11 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $3 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $11 + local.get $10 i64.add local.set $1 br $while-continue|6 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 end @@ -8094,18 +8080,16 @@ return end local.get $1 - local.get $1 local.get $2 i32.add local.tee $3 + i32.const 21 i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end + i32.const 0 + local.get $1 + local.get $3 + i32.le_s + select if (result i32) loop $for-loop|0 local.get $1 @@ -8326,15 +8310,15 @@ (local $3 i64) (local $4 i32) (local $5 i64) - (local $6 i32) + (local $6 i64) (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) local.get $1 f64.const 0 f64.lt - local.tee $8 + local.tee $9 if (result f64) local.get $0 i32.const 45 @@ -8345,60 +8329,60 @@ local.get $1 end i64.reinterpret_f64 - local.tee $3 + local.tee $2 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $3 + local.get $2 i64.const 4503599627370495 i64.and i64.add - local.tee $2 + local.tee $3 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i64.clz i32.wrap_i64 local.tee $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $6 + local.get $8 i32.const 1 - local.get $6 + local.get $8 select i32.const 1075 i32.sub - local.tee $6 + local.tee $8 i32.const 1 i32.sub local.get $4 i32.sub local.set $4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $9 + local.tee $10 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $6 - local.get $9 + local.get $8 + local.get $10 i32.sub local.get $4 i32.sub @@ -8431,10 +8415,10 @@ local.tee $4 i32.const 3 i32.shl - local.tee $9 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $9 + local.get $10 i32.const 9024 i32.add i64.load @@ -8447,52 +8431,40 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $6 i64.const 4294967295 i64.and - local.set $5 - local.get $0 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $2 + local.set $2 + local.get $6 i64.const 32 i64.shr_u - local.tee $7 - local.get $3 + local.tee $6 + global.get $~lib/util/number/_frc_plus + local.tee $5 i64.const 32 i64.shr_u - local.tee $10 + local.tee $7 i64.mul - local.get $5 + local.get $2 local.get $7 i64.mul local.get $2 + local.get $5 i64.const 4294967295 i64.and - local.tee $2 - local.get $5 + local.tee $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $10 - i64.mul local.get $5 + local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and i64.add @@ -8501,47 +8473,48 @@ i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $6 + i64.const 1 + i64.sub + local.set $5 local.get $0 - i32.sub + local.get $9 + i32.const 1 + i32.shl i32.add - i32.const -64 - i32.sub - global.get $~lib/util/number/_frc_plus - local.tee $2 - i64.const 32 - i64.shr_u - local.tee $5 + 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.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $10 - local.get $5 + local.get $2 + local.get $7 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and - local.tee $2 - local.get $10 + local.tee $3 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $7 + local.get $3 + local.get $6 i64.mul - local.get $5 + local.get $7 i64.const 4294967295 i64.and i64.add @@ -8550,36 +8523,36 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $2 + global.get $~lib/util/number/_exp_pow + local.tee $4 + local.get $8 + local.get $0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $5 local.get $4 global.get $~lib/util/number/_exp i32.add i32.const -64 i32.sub - local.get $2 + local.get $5 + local.get $6 global.get $~lib/util/number/_frc_minus - local.tee $2 + local.tee $3 i64.const 32 i64.shr_u local.tee $5 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 + local.get $2 local.get $5 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and local.tee $2 - local.get $3 i64.mul i64.const 32 i64.shr_u @@ -8589,7 +8562,7 @@ i64.shr_u i64.add local.get $2 - local.get $7 + local.get $6 i64.mul local.get $3 i64.const 4294967295 @@ -8603,13 +8576,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $9 call $~lib/util/number/genDigits - local.get $8 + local.get $9 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $9 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -8920,24 +8893,24 @@ local.get $6 i32.lt_s if - local.get $4 - local.tee $2 local.get $0 local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $2 + local.get $4 i32.ne if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $4 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 + local.tee $4 if local.get $4 call $~lib/rt/pure/__retain @@ -9006,33 +8979,34 @@ call $~lib/rt/pure/__release end local.get $2 + local.tee $0 if - local.get $2 + local.get $0 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $2 local.get $1 - local.get $0 + local.get $2 call $~lib/string/String.__concat - local.tee $0 - local.tee $4 + local.tee $3 + local.tee $2 local.get $1 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $2 local.set $1 end local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release local.get $1 ) @@ -9059,155 +9033,156 @@ (local $8 i32) i32.const 8144 call $~lib/rt/pure/__retain - local.set $8 + local.set $5 local.get $1 i32.const 1 i32.sub - local.tee $7 + local.tee $6 i32.const 0 i32.lt_s if - local.get $8 + local.get $5 call $~lib/rt/pure/__release i32.const 7840 return end - local.get $7 + local.get $6 i32.eqz if local.get $0 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 end - local.get $8 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 10112 i32.const 7840 - local.get $2 + local.get $3 select return end i32.const 7840 local.set $1 - local.get $8 + local.get $5 call $~lib/string/String#get:length - local.set $5 + local.set $8 loop $for-loop|0 - local.get $2 - local.get $7 + local.get $3 + local.get $6 i32.lt_s if local.get $4 - local.tee $3 local.get $0 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $2 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end - local.get $4 - if + local.get $2 + local.tee $4 + if local.get $1 local.get $1 i32.const 10112 call $~lib/string/String.__concat - local.tee $6 - local.tee $3 + local.tee $7 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $1 call $~lib/rt/pure/__release end - local.get $6 + local.get $7 call $~lib/rt/pure/__release - local.get $3 + local.get $2 local.set $1 end - local.get $5 + local.get $8 if local.get $1 - local.tee $3 - local.get $8 + local.tee $2 + local.get $5 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 local.tee $1 - local.get $3 + local.get $2 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $2 call $~lib/rt/pure/__release end - local.get $6 + local.get $7 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end local.get $4 local.get $0 - local.get $7 + local.get $6 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $4 call $~lib/rt/pure/__release end - local.get $3 + local.get $2 + local.tee $0 if local.get $1 local.get $1 i32.const 10112 call $~lib/string/String.__concat - local.tee $0 local.tee $4 + local.tee $2 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $1 call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__release local.get $4 + call $~lib/rt/pure/__release + local.get $2 local.set $1 end - local.get $8 + local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $1 ) @@ -9849,10 +9824,10 @@ i64.const 10 i64.lt_u if + local.get $0 local.get $2 i32.const 1 i32.shl - local.get $0 i32.add local.get $1 i64.const 48 @@ -9867,16 +9842,16 @@ i64.const 4294967295 i64.le_u if - local.get $2 local.get $1 i32.wrap_i64 - local.tee $2 + local.tee $3 call $~lib/util/number/decimalCount32 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $0 - local.get $2 local.get $3 + local.get $2 call $~lib/util/number/utoa_dec_simple else local.get $0 @@ -9885,10 +9860,10 @@ call $~lib/util/number/decimalCount64High local.get $2 i32.add - local.tee $3 + local.tee $2 call $~lib/util/number/utoa_dec_simple end - local.get $3 + local.get $2 ) (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -10091,169 +10066,170 @@ (local $9 i32) i32.const 8144 call $~lib/rt/pure/__retain - local.set $9 + local.set $5 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $6 i32.const 0 i32.lt_s if - local.get $9 + local.get $5 call $~lib/rt/pure/__release i32.const 7840 return end - local.get $8 + local.get $6 i32.eqz if local.get $0 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 end - local.get $2 + local.get $3 if (result i32) - local.get $2 + local.get $3 i32.const 8144 call $~lib/array/Array#join else i32.const 7840 end - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end i32.const 7840 local.set $1 - local.get $9 + local.get $5 call $~lib/string/String#get:length - local.set $6 + local.set $8 loop $for-loop|0 - local.get $2 - local.get $8 + local.get $3 + local.get $6 i32.lt_s if local.get $4 - local.tee $3 local.get $0 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $2 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 + local.tee $4 if local.get $4 i32.const 8144 call $~lib/array/Array#join - local.tee $3 + local.tee $2 local.get $1 local.get $1 - local.get $3 + local.get $2 call $~lib/string/String.__concat - local.tee $5 - local.tee $3 + local.tee $9 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $3 + local.get $2 local.set $1 end - local.get $6 + local.get $8 if local.get $1 - local.tee $3 - local.get $9 + local.tee $2 + local.get $5 call $~lib/string/String.__concat local.tee $7 local.tee $1 - local.get $3 + local.get $2 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $2 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end local.get $4 local.get $0 - local.get $8 + local.get $6 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $4 call $~lib/rt/pure/__release end - local.get $3 + local.get $2 + local.tee $0 if - local.get $3 + local.get $0 i32.const 8144 call $~lib/array/Array#join - local.tee $0 + local.tee $2 local.get $1 local.get $1 - local.get $0 + local.get $2 call $~lib/string/String.__concat - local.tee $0 - local.tee $4 + local.tee $3 + local.tee $2 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $2 local.set $1 end - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $1 ) @@ -10434,169 +10410,170 @@ (local $9 i32) i32.const 8144 call $~lib/rt/pure/__retain - local.set $9 + local.set $5 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $6 i32.const 0 i32.lt_s if - local.get $9 + local.get $5 call $~lib/rt/pure/__release i32.const 7840 return end - local.get $8 + local.get $6 i32.eqz if local.get $0 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 end - local.get $2 + local.get $3 if (result i32) - local.get $2 + local.get $3 i32.const 8144 call $~lib/array/Array#join else i32.const 7840 end - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end i32.const 7840 local.set $1 - local.get $9 + local.get $5 call $~lib/string/String#get:length - local.set $6 + local.set $8 loop $for-loop|0 - local.get $2 - local.get $8 + local.get $3 + local.get $6 i32.lt_s if local.get $4 - local.tee $3 local.get $0 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $2 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 + local.tee $4 if local.get $4 i32.const 8144 call $~lib/array/Array#join - local.tee $3 + local.tee $2 local.get $1 local.get $1 - local.get $3 + local.get $2 call $~lib/string/String.__concat - local.tee $5 - local.tee $3 + local.tee $9 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $3 + local.get $2 local.set $1 end - local.get $6 + local.get $8 if local.get $1 - local.tee $3 - local.get $9 + local.tee $2 + local.get $5 call $~lib/string/String.__concat local.tee $7 local.tee $1 - local.get $3 + local.get $2 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $2 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end local.get $4 local.get $0 - local.get $8 + local.get $6 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $4 call $~lib/rt/pure/__release end - local.get $3 + local.get $2 + local.tee $0 if - local.get $3 + local.get $0 i32.const 8144 call $~lib/array/Array#join - local.tee $0 + local.tee $2 local.get $1 local.get $1 - local.get $0 + local.get $2 call $~lib/string/String.__concat - local.tee $0 - local.tee $4 + local.tee $3 + local.tee $2 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $2 local.set $1 end - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $1 ) @@ -10616,169 +10593,170 @@ (local $9 i32) i32.const 8144 call $~lib/rt/pure/__retain - local.set $9 + local.set $5 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $6 i32.const 0 i32.lt_s if - local.get $9 + local.get $5 call $~lib/rt/pure/__release i32.const 7840 return end - local.get $8 + local.get $6 i32.eqz if local.get $0 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 end - local.get $2 + local.get $3 if (result i32) - local.get $2 + local.get $3 i32.const 8144 call $~lib/array/Array#join else i32.const 7840 end - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end i32.const 7840 local.set $1 - local.get $9 + local.get $5 call $~lib/string/String#get:length - local.set $6 + local.set $8 loop $for-loop|0 - local.get $2 - local.get $8 + local.get $3 + local.get $6 i32.lt_s if local.get $4 - local.tee $3 local.get $0 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $2 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 + local.tee $4 if local.get $4 i32.const 8144 call $~lib/array/Array#join - local.tee $3 + local.tee $2 local.get $1 local.get $1 - local.get $3 + local.get $2 call $~lib/string/String.__concat - local.tee $5 - local.tee $3 + local.tee $9 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $3 + local.get $2 local.set $1 end - local.get $6 + local.get $8 if local.get $1 - local.tee $3 - local.get $9 + local.tee $2 + local.get $5 call $~lib/string/String.__concat local.tee $7 local.tee $1 - local.get $3 + local.get $2 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $2 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end local.get $4 local.get $0 - local.get $8 + local.get $6 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $4 call $~lib/rt/pure/__release end - local.get $3 + local.get $2 + local.tee $0 if - local.get $3 + local.get $0 i32.const 8144 call $~lib/array/Array#join - local.tee $0 + local.tee $2 local.get $1 local.get $1 - local.get $0 + local.get $2 call $~lib/string/String.__concat - local.tee $0 - local.tee $4 + local.tee $3 + local.tee $2 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $2 local.set $1 end - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $1 ) @@ -10802,71 +10780,71 @@ (local $9 i32) i32.const 8144 call $~lib/rt/pure/__retain - local.set $9 + local.set $5 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $6 i32.const 0 i32.lt_s if - local.get $9 + local.get $5 call $~lib/rt/pure/__release i32.const 7840 return end - local.get $8 + local.get $6 i32.eqz if local.get $0 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 end - local.get $2 + local.get $3 if (result i32) - local.get $2 + local.get $3 call $~lib/array/Array<~lib/array/Array>#toString else i32.const 7840 end - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end i32.const 7840 local.set $1 - local.get $9 + local.get $5 call $~lib/string/String#get:length - local.set $6 + local.set $8 loop $for-loop|0 - local.get $2 - local.get $8 + local.get $3 + local.get $6 i32.lt_s if local.get $4 - local.tee $3 local.get $0 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $2 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 + local.tee $4 if local.get $1 local.get $1 @@ -10874,94 +10852,95 @@ call $~lib/array/Array<~lib/array/Array>#toString local.tee $7 call $~lib/string/String.__concat - local.tee $5 - local.tee $3 + local.tee $9 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $1 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $3 + local.get $2 local.set $1 end - local.get $6 + local.get $8 if local.get $1 - local.tee $3 - local.get $9 + local.tee $2 + local.get $5 call $~lib/string/String.__concat local.tee $7 local.tee $1 - local.get $3 + local.get $2 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $2 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end local.get $4 local.get $0 - local.get $8 + local.get $6 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $2 i32.ne if - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.set $3 + local.set $2 local.get $4 call $~lib/rt/pure/__release end - local.get $3 + local.get $2 + local.tee $0 if local.get $1 local.get $1 - local.get $3 + local.get $0 call $~lib/array/Array<~lib/array/Array>#toString - local.tee $0 + local.tee $4 call $~lib/string/String.__concat + local.tee $3 local.tee $2 - local.tee $4 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $1 call $~lib/rt/pure/__release end - local.get $0 + local.get $4 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $2 local.set $1 end - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $1 ) @@ -11225,10 +11204,10 @@ (local $27 i32) (local $28 i32) (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 f32) - (local $33 f64) + (local $30 f32) + (local $31 f64) + (local $32 i32) + (local $33 i32) (local $34 i32) (local $35 i32) (local $36 i32) @@ -11253,8 +11232,6 @@ (local $55 i32) (local $56 i32) (local $57 i32) - (local $58 i32) - (local $59 i32) i32.const 0 call $~lib/array/Array#constructor global.set $std/array/arr @@ -11274,52 +11251,51 @@ i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $0 + local.tee $2 i32.eqz if i32.const 12 i32.const 2 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.set $0 + local.set $2 end - local.get $0 - local.tee $1 + local.get $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 0 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 i32.store offset=8 i32.const 1 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 + local.tee $0 i32.const 0 i32.const 1 call $~lib/memory/memory.fill + local.get $0 + local.tee $3 local.get $2 - local.tee $0 - local.get $1 i32.load - local.tee $4 + local.tee $1 i32.ne if - local.get $0 + local.get $3 call $~lib/rt/pure/__retain - local.set $0 - local.get $4 + local.set $3 + local.get $1 call $~lib/rt/pure/__release end - local.get $1 - local.get $0 + local.get $2 + local.get $3 i32.store - local.get $1 local.get $2 + local.get $0 i32.store offset=4 - local.get $1 + local.get $2 i32.const 1 i32.store offset=8 global.get $std/array/arr @@ -11334,7 +11310,7 @@ unreachable end call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release i32.const 5 i32.const 0 @@ -11342,20 +11318,20 @@ i32.const 1440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $5 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 0 i32.const 6 i32.const 1472 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $6 call $std/array/isArraysEqual i32.eqz if @@ -11366,20 +11342,20 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 i32.const 0 i32.const 0 i32.const 2147483647 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 0 i32.const 6 i32.const 1568 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $4 call $std/array/isArraysEqual i32.eqz if @@ -11390,13 +11366,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 0 i32.const 6 @@ -11414,20 +11390,20 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 i32.const 2 i32.const -2 i32.const 2147483647 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 0 i32.const 6 i32.const 1632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $1 call $std/array/isArraysEqual i32.eqz if @@ -11438,20 +11414,20 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 0 i32.const 6 i32.const 1664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $10 + local.tee $0 call $std/array/isArraysEqual i32.eqz if @@ -11462,17 +11438,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 call $~lib/rt/pure/__release - local.get $1 + local.get $6 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $1 call $~lib/rt/pure/__release - local.get $10 + local.get $0 call $~lib/rt/pure/__release i32.const 5 i32.const 2 @@ -11480,20 +11456,20 @@ i32.const 1696 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $5 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 2 i32.const 7 i32.const 1744 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $6 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11505,20 +11481,20 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 i32.const 0 i32.const 0 i32.const 2147483647 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 2 i32.const 7 i32.const 1792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $4 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11530,13 +11506,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 2 i32.const 7 @@ -11555,20 +11531,20 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 i32.const 2 i32.const -2 i32.const 2147483647 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 2 i32.const 7 i32.const 1888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11580,20 +11556,20 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $5 i32.const 5 i32.const 2 i32.const 7 i32.const 1936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $10 + local.tee $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11605,17 +11581,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 call $~lib/rt/pure/__release - local.get $1 + local.get $6 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $1 call $~lib/rt/pure/__release - local.get $10 + local.get $0 call $~lib/rt/pure/__release global.get $std/array/arr i32.load offset=12 @@ -11880,20 +11856,20 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=4 local.tee $1 + i32.load offset=4 + local.tee $0 i32.const 0 call $std/array/Ref#constructor i32.store - local.get $1 + local.get $0 i32.const 0 call $std/array/Ref#constructor i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#set:length - local.get $0 + local.get $1 i32.load offset=12 if i32.const 0 @@ -11903,15 +11879,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 0 call $~lib/array/Array#constructor - local.set $1 + local.set $4 global.get $std/array/arr - local.get $1 + local.get $4 call $~lib/array/Array#concat - local.set $2 + local.set $1 global.get $std/array/arr call $std/array/internalCapacity i32.const 3 @@ -11936,7 +11912,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.load offset=12 i32.const 3 i32.ne @@ -11948,14 +11924,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 0 i32.const 2 i32.const 3 i32.const 2032 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $0 call $~lib/array/Array#concat call $~lib/rt/pure/__release global.get $std/array/arr @@ -11970,7 +11946,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -11983,7 +11959,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -11996,7 +11972,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -12009,19 +11985,19 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.const 46 call $~lib/array/Array#push drop - local.get $1 + local.get $4 i32.const 47 call $~lib/array/Array#push drop global.get $std/array/arr - local.get $1 + local.get $4 call $~lib/array/Array#concat - local.set $0 - local.get $2 + local.set $6 + local.get $1 call $~lib/rt/pure/__release global.get $std/array/arr call $std/array/internalCapacity @@ -12035,7 +12011,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.load offset=12 i32.const 2 i32.ne @@ -12047,7 +12023,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $6 i32.load offset=12 i32.const 5 i32.ne @@ -12059,7 +12035,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $6 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -12072,7 +12048,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $6 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -12085,7 +12061,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $6 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -12098,7 +12074,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $6 i32.const 3 call $~lib/array/Array#__get i32.const 46 @@ -12111,7 +12087,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $6 i32.const 4 call $~lib/array/Array#__get i32.const 47 @@ -12124,10 +12100,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $6 call $~lib/array/Array#pop drop - local.get $0 + local.get $6 i32.load offset=12 i32.const 4 i32.ne @@ -12145,7 +12121,7 @@ i32.const 2048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=12 if i32.const 0 @@ -12155,13 +12131,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 global.get $std/array/arr call $~lib/array/Array#concat - local.set $3 - local.get $0 + local.set $1 + local.get $6 call $~lib/rt/pure/__release - local.get $3 + local.get $1 i32.load offset=12 i32.const 3 i32.ne @@ -12173,7 +12149,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=12 if i32.const 0 @@ -12183,13 +12159,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 call $~lib/rt/pure/__release - local.get $3 + local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $0 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 5 i32.const 2 @@ -12202,14 +12178,14 @@ i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $2 + local.tee $21 i32.const 5 i32.const 2 i32.const 3 i32.const 2112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 + local.tee $22 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12235,14 +12211,14 @@ i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $4 + local.tee $23 i32.const 5 i32.const 2 i32.const 3 i32.const 2208 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $10 + local.tee $24 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12260,21 +12236,22 @@ i32.const 2256 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain + local.set $0 local.get $1 call $~lib/rt/pure/__release - local.tee $1 + local.get $0 i32.const 1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $15 + local.tee $11 i32.const 5 i32.const 2 i32.const 3 i32.const 2304 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $23 + local.tee $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12292,21 +12269,21 @@ i32.const 2352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 i32.const 2 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $6 + local.tee $18 i32.const 5 i32.const 2 i32.const 3 i32.const 2400 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 + local.tee $19 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12324,21 +12301,21 @@ i32.const 2448 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 i32.const 0 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $7 + local.tee $12 i32.const 5 i32.const 2 i32.const 3 i32.const 2496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $9 + local.tee $13 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12356,21 +12333,21 @@ i32.const 2544 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 i32.const 1 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $11 + local.tee $14 i32.const 5 i32.const 2 i32.const 3 i32.const 2592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $13 + local.tee $15 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12388,21 +12365,21 @@ i32.const 2640 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 i32.const 1 i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $26 + local.tee $16 i32.const 5 i32.const 2 i32.const 3 i32.const 2688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $16 + local.tee $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12420,21 +12397,21 @@ i32.const 2736 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 i32.const 0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $17 + local.tee $10 i32.const 5 i32.const 2 i32.const 3 i32.const 2784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $18 + local.tee $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12452,21 +12429,21 @@ i32.const 2832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 i32.const 0 i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $14 + local.tee $7 i32.const 5 i32.const 2 i32.const 3 i32.const 2880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $20 + local.tee $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12484,22 +12461,21 @@ i32.const 2928 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const -4 i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.tee $19 + local.tee $5 i32.const 5 i32.const 2 i32.const 3 i32.const 2976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $21 + local.tee $6 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12517,22 +12493,21 @@ i32.const 3024 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $1 local.get $0 call $~lib/rt/pure/__release - local.get $1 + local.tee $0 i32.const -4 i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $22 + local.tee $4 i32.const 5 i32.const 2 i32.const 3 i32.const 3072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $24 + local.tee $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12550,10 +12525,10 @@ i32.const 3120 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + local.set $20 local.get $0 + call $~lib/rt/pure/__release + local.get $20 i32.const -4 i32.const -3 i32.const 2147483647 @@ -12565,7 +12540,7 @@ i32.const 3168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $25 + local.tee $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12577,55 +12552,55 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + local.get $20 call $~lib/rt/pure/__release - local.get $10 + local.get $21 call $~lib/rt/pure/__release - local.get $15 + local.get $22 call $~lib/rt/pure/__release local.get $23 call $~lib/rt/pure/__release - local.get $6 + local.get $24 call $~lib/rt/pure/__release - local.get $8 + local.get $11 call $~lib/rt/pure/__release - local.get $7 + local.get $17 call $~lib/rt/pure/__release - local.get $9 + local.get $18 call $~lib/rt/pure/__release - local.get $11 + local.get $19 + call $~lib/rt/pure/__release + local.get $12 call $~lib/rt/pure/__release local.get $13 call $~lib/rt/pure/__release - local.get $26 + local.get $14 + call $~lib/rt/pure/__release + local.get $15 call $~lib/rt/pure/__release local.get $16 call $~lib/rt/pure/__release - local.get $17 + local.get $2 call $~lib/rt/pure/__release - local.get $18 + local.get $10 call $~lib/rt/pure/__release - local.get $14 + local.get $8 call $~lib/rt/pure/__release - local.get $20 + local.get $7 call $~lib/rt/pure/__release - local.get $19 + local.get $9 call $~lib/rt/pure/__release - local.get $21 + local.get $5 call $~lib/rt/pure/__release - local.get $22 + local.get $6 call $~lib/rt/pure/__release - local.get $24 + local.get $4 + call $~lib/rt/pure/__release + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $25 + local.get $0 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 42 @@ -13205,36 +13180,34 @@ i32.const 3216 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 - local.set $4 - i32.const 0 + local.tee $6 local.set $0 + i32.const 0 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf - local.get $1 + i32.const 0 + local.get $6 i32.load offset=12 - local.tee $2 - if (result i32) - i32.const 0 - local.get $2 - i32.ge_s - else - i32.const 1 - end + local.tee $1 + i32.ge_s + i32.const 1 + local.get $1 + select if i32.const -1 - local.set $0 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf end - local.get $4 + local.get $0 i32.load offset=4 - local.set $3 + local.set $0 loop $while-continue|0 - local.get $0 - local.get $2 + local.get $3 + local.get $1 i32.lt_s if - local.get $3 local.get $0 + local.get $3 i32.const 2 i32.shl i32.add @@ -13242,17 +13215,17 @@ f32.const nan:0x400000 f32.eq br_if $__inlined_func$~lib/array/Array#indexOf - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.const -1 i32.ne if @@ -13269,36 +13242,34 @@ i32.const 3248 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 - local.set $10 - i32.const 0 + local.tee $4 local.set $0 + i32.const 0 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf - local.get $2 + i32.const 0 + local.get $4 i32.load offset=12 - local.tee $3 - if (result i32) - i32.const 0 - local.get $3 - i32.ge_s - else - i32.const 1 - end + local.tee $1 + i32.ge_s + i32.const 1 + local.get $1 + select if i32.const -1 - local.set $0 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf end - local.get $10 + local.get $0 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|019 - local.get $0 local.get $3 + local.get $1 i32.lt_s if - local.get $4 local.get $0 + local.get $3 i32.const 3 i32.shl i32.add @@ -13306,17 +13277,17 @@ f64.const nan:0x8000000000000 f64.eq br_if $__inlined_func$~lib/array/Array#indexOf - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $while-continue|019 end end i32.const -1 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.const -1 i32.ne if @@ -13327,9 +13298,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $6 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 44 @@ -13469,7 +13440,8 @@ end block $__inlined_func$~lib/array/Array#includes (result i32) i32.const 0 - local.set $0 + local.set $2 + i32.const 0 i32.const 0 i32.const 1 i32.const 2 @@ -13477,49 +13449,44 @@ i32.const 3280 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $6 i32.load offset=12 - local.tee $3 - if (result i32) - i32.const 0 - local.get $3 - i32.ge_s - else - i32.const 1 - end + local.tee $1 + i32.ge_s + i32.const 1 + local.get $1 + select br_if $__inlined_func$~lib/array/Array#includes drop - local.get $2 + local.get $6 i32.load offset=4 - local.set $10 + local.set $0 loop $while-continue|020 - local.get $0 - local.get $3 + local.get $2 + local.get $1 i32.lt_s if i32.const 1 - local.get $10 + i32.const 1 local.get $0 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.tee $32 + local.tee $30 + local.get $30 + f32.ne + local.get $30 f32.const nan:0x400000 f32.eq - if (result i32) - i32.const 1 - else - local.get $32 - local.get $32 - f32.ne - end + select br_if $__inlined_func$~lib/array/Array#includes drop - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $while-continue|020 end end @@ -13536,7 +13503,8 @@ end block $__inlined_func$~lib/array/Array#includes (result i32) i32.const 0 - local.set $0 + local.set $3 + i32.const 0 i32.const 0 i32.const 1 i32.const 3 @@ -13544,49 +13512,44 @@ i32.const 3312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 local.tee $4 - if (result i32) - i32.const 0 - local.get $4 - i32.ge_s - else - i32.const 1 - end + i32.load offset=12 + local.tee $1 + i32.ge_s + i32.const 1 + local.get $1 + select br_if $__inlined_func$~lib/array/Array#includes drop - local.get $3 + local.get $4 i32.load offset=4 - local.set $15 + local.set $0 loop $while-continue|021 - local.get $0 - local.get $4 + local.get $3 + local.get $1 i32.lt_s if i32.const 1 - local.get $15 + i32.const 1 local.get $0 + local.get $3 i32.const 3 i32.shl i32.add f64.load - local.tee $33 + local.tee $31 + local.get $31 + f64.ne + local.get $31 f64.const nan:0x8000000000000 f64.eq - if (result i32) - i32.const 1 - else - local.get $33 - local.get $33 - f64.ne - end + select br_if $__inlined_func$~lib/array/Array#includes drop - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $while-continue|021 end end @@ -13656,9 +13619,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $6 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release i32.const 5 i32.const 2 @@ -13666,18 +13629,18 @@ i32.const 3344 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $3 + local.tee $35 i32.const 5 i32.const 2 i32.const 3 i32.const 3392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $36 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13689,14 +13652,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 2 i32.const 3 i32.const 3440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $6 + local.tee $37 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13714,21 +13677,21 @@ i32.const 3456 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + local.set $1 local.get $0 + call $~lib/rt/pure/__release + local.get $1 i32.const 0 i32.const 0 call $~lib/array/Array#splice - local.tee $8 + local.tee $38 i32.const 0 i32.const 2 i32.const 3 i32.const 3504 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.tee $39 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13740,14 +13703,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 2 i32.const 3 i32.const 3520 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $9 + local.tee $40 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13765,21 +13728,20 @@ i32.const 3568 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $11 + local.tee $41 i32.const 3 i32.const 2 i32.const 3 i32.const 3616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $13 + local.tee $42 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13798,7 +13760,7 @@ i32.const 3648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $16 + local.tee $43 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13816,21 +13778,20 @@ i32.const 3680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $2 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.tee $1 i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.tee $17 + local.tee $44 i32.const 2 i32.const 2 i32.const 3 i32.const 3728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $18 + local.tee $45 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13842,14 +13803,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.const 2 i32.const 3 i32.const 3760 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $14 + local.tee $46 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13867,21 +13828,20 @@ i32.const 3792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $0 - local.get $2 + local.get $1 call $~lib/rt/pure/__release - local.get $0 + local.tee $1 i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.tee $20 + local.tee $47 i32.const 1 i32.const 2 i32.const 3 i32.const 3840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $19 + local.tee $48 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13893,14 +13853,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 2 i32.const 3 i32.const 3872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $21 + local.tee $49 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13918,20 +13878,20 @@ i32.const 3904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $22 + local.tee $50 i32.const 1 i32.const 2 i32.const 3 i32.const 3952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $24 + local.tee $51 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13943,14 +13903,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 2 i32.const 3 i32.const 3984 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $25 + local.tee $52 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13968,20 +13928,20 @@ i32.const 4016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const -2 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $27 + local.tee $53 i32.const 2 i32.const 2 i32.const 3 i32.const 4064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.tee $54 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13993,14 +13953,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 2 i32.const 3 i32.const 4096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 + local.tee $55 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14018,20 +13978,20 @@ i32.const 4128 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.tee $30 + local.tee $56 i32.const 1 i32.const 2 i32.const 3 i32.const 4176 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $31 + local.tee $57 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14043,14 +14003,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 2 i32.const 3 i32.const 4208 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $26 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14068,20 +14028,20 @@ i32.const 4240 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const -7 i32.const 1 call $~lib/array/Array#splice - local.tee $35 + local.tee $27 i32.const 1 i32.const 2 i32.const 3 i32.const 4288 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $36 + local.tee $20 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14093,14 +14053,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 2 i32.const 3 i32.const 4320 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $37 + local.tee $21 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14118,20 +14078,20 @@ i32.const 4352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const -2 i32.const -1 call $~lib/array/Array#splice - local.tee $38 + local.tee $22 i32.const 0 i32.const 2 i32.const 3 i32.const 4400 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $39 + local.tee $23 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14143,14 +14103,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 2 i32.const 3 i32.const 4416 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $40 + local.tee $24 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14168,20 +14128,20 @@ i32.const 4464 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 1 i32.const -2 call $~lib/array/Array#splice - local.tee $41 + local.tee $11 i32.const 0 i32.const 2 i32.const 3 i32.const 4512 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $42 + local.tee $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14193,14 +14153,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 2 i32.const 3 i32.const 4528 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $43 + local.tee $18 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14218,20 +14178,20 @@ i32.const 4576 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 4 i32.const 0 call $~lib/array/Array#splice - local.tee $44 + local.tee $19 i32.const 0 i32.const 2 i32.const 3 i32.const 4624 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $12 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14243,14 +14203,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 2 i32.const 3 i32.const 4640 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $46 + local.tee $13 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14268,21 +14228,20 @@ i32.const 4688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const 7 i32.const 0 call $~lib/array/Array#splice - local.tee $47 + local.tee $14 i32.const 0 i32.const 2 i32.const 3 i32.const 4736 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $48 + local.tee $15 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14301,7 +14260,7 @@ i32.const 4752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $49 + local.tee $16 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14319,21 +14278,21 @@ i32.const 4800 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $2 + local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $0 i32.const 7 i32.const 5 call $~lib/array/Array#splice - local.tee $50 + local.tee $2 i32.const 0 i32.const 2 i32.const 3 i32.const 4848 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $51 + local.tee $10 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14345,14 +14304,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 5 i32.const 2 i32.const 3 i32.const 4864 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $52 + local.tee $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14370,10 +14329,10 @@ i32.const 4912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $3 i32.const 1 call $~lib/array/Array#splice - local.tee $15 + local.tee $1 i32.load offset=12 if i32.const 0 @@ -14383,7 +14342,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.load offset=12 if i32.const 0 @@ -14399,37 +14358,37 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $10 + local.tee $25 i32.load offset=4 - local.tee $0 + local.tee $4 i32.const 1 call $std/array/Ref#constructor i32.store - local.get $0 + local.get $4 i32.const 2 call $std/array/Ref#constructor i32.store offset=4 - local.get $0 + local.get $4 i32.const 3 call $std/array/Ref#constructor i32.store offset=8 - local.get $0 + local.get $4 i32.const 4 call $std/array/Ref#constructor i32.store offset=12 - local.get $0 + local.get $4 i32.const 5 call $std/array/Ref#constructor i32.store offset=16 - local.get $1 + local.get $3 call $~lib/rt/pure/__release - local.get $10 + local.get $25 i32.const 2 call $~lib/array/Array#splice - local.set $23 - local.get $15 + local.set $29 + local.get $1 call $~lib/rt/pure/__release - local.get $23 + local.get $29 i32.load offset=12 i32.const 2 i32.ne @@ -14441,10 +14400,10 @@ call $~lib/builtins/abort unreachable end - local.get $23 + local.get $29 i32.const 0 call $~lib/array/Array#__get - local.tee $53 + local.tee $7 i32.load i32.const 3 i32.ne @@ -14456,10 +14415,10 @@ call $~lib/builtins/abort unreachable end - local.get $23 + local.get $29 i32.const 1 call $~lib/array/Array#__get - local.tee $54 + local.tee $9 i32.load i32.const 4 i32.ne @@ -14471,7 +14430,7 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $25 i32.load offset=12 i32.const 3 i32.ne @@ -14483,10 +14442,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $25 i32.const 0 call $~lib/array/Array#__get - local.tee $55 + local.tee $5 i32.load i32.const 1 i32.ne @@ -14498,10 +14457,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $25 i32.const 1 call $~lib/array/Array#__get - local.tee $56 + local.tee $6 i32.load i32.const 2 i32.ne @@ -14513,10 +14472,10 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $25 i32.const 2 call $~lib/array/Array#__get - local.tee $57 + local.tee $4 i32.load i32.const 5 i32.ne @@ -14534,22 +14493,22 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $15 + local.tee $28 i32.load offset=4 - local.tee $0 + local.tee $1 i32.const 1 call $std/array/Ref#constructor i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2 call $std/array/Ref#constructor i32.store offset=8 - local.get $15 + local.get $28 call $~lib/array/Array#splice - local.tee $26 + local.tee $32 i32.load offset=12 i32.const 1 i32.ne @@ -14561,11 +14520,11 @@ call $~lib/builtins/abort unreachable end - local.get $26 + local.get $32 i32.const 0 call $~lib/array/Array#__get - local.tee $0 - local.get $0 + local.tee $33 + local.get $33 i32.eqz if i32.const 5040 @@ -14586,7 +14545,7 @@ call $~lib/builtins/abort unreachable end - local.get $15 + local.get $28 i32.load offset=12 i32.const 2 i32.ne @@ -14598,10 +14557,10 @@ call $~lib/builtins/abort unreachable end - local.get $15 + local.get $28 i32.const 0 call $~lib/array/Array#__get - local.tee $58 + local.tee $3 if i32.const 0 i32.const 1296 @@ -14610,11 +14569,11 @@ call $~lib/builtins/abort unreachable end - local.get $15 + local.get $28 i32.const 1 call $~lib/array/Array#__get - local.tee $1 - local.get $1 + local.tee $34 + local.get $34 i32.eqz if i32.const 5040 @@ -14635,55 +14594,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $34 + local.get $0 call $~lib/rt/pure/__release local.get $35 call $~lib/rt/pure/__release @@ -14731,18 +14642,66 @@ call $~lib/rt/pure/__release local.get $57 call $~lib/rt/pure/__release - local.get $0 + local.get $26 call $~lib/rt/pure/__release - local.get $58 + local.get $27 call $~lib/rt/pure/__release - local.get $1 + local.get $20 call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 0 - i32.const 0 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 1 + local.get $21 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $33 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $34 + call $~lib/rt/pure/__release + global.get $std/array/arr + i32.const 0 + i32.const 0 + call $~lib/array/Array#__set + global.get $std/array/arr + i32.const 1 i32.const 1 call $~lib/array/Array#__set global.get $std/array/arr @@ -15216,18 +15175,20 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $3 loop $for-loop|0 - local.get $5 + local.get $3 i32.const 100 i32.lt_s if global.get $std/array/arr call $~lib/array/Array#pop drop - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + local.set $3 br $for-loop|0 end end @@ -15248,62 +15209,62 @@ call $~lib/array/Array#push drop i32.const 0 - local.set $0 + local.set $3 global.get $std/array/arr - local.tee $1 + local.tee $9 i32.load offset=12 - local.tee $3 + local.tee $6 i32.const 2 i32.const 9 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $5 i32.load offset=4 local.set $4 loop $for-loop|039 - local.get $0 local.get $3 - local.get $1 + local.get $6 + local.get $9 i32.load offset=12 - local.tee $5 - local.get $3 - local.get $5 + local.tee $0 + local.get $6 + local.get $0 i32.lt_s select i32.lt_s if - local.get $0 + local.get $3 i32.const 2 i32.shl - local.tee $5 - local.get $1 + local.tee $1 + local.get $9 i32.load offset=4 i32.add i32.load - local.set $6 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $4 - local.get $5 i32.add - local.get $6 local.get $0 - local.get $1 + local.get $3 + local.get $9 i32.const 5760 i32.load call_indirect (type $i32_i32_i32_=>_f32) f32.store - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|039 end end i32.const 5760 call $~lib/rt/pure/__release - local.get $2 + local.get $5 i32.load offset=12 i32.const 4 i32.ne @@ -15315,7 +15276,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 i32.const 0 call $~lib/array/Array#__get global.get $std/array/arr @@ -15426,7 +15387,7 @@ i32.const 3 call $~lib/array/Array#push drop - local.get $2 + local.get $5 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 5888 @@ -15859,22 +15820,22 @@ i32.const 6704 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $1 + local.set $17 i32.const 0 global.set $~argumentsLength - local.get $1 + local.get $17 call $~lib/array/Array#sort i32.const 6752 call $~lib/rt/pure/__release call $~lib/rt/pure/__release - local.get $1 + local.get $17 i32.const 8 i32.const 2 i32.const 9 i32.const 6784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $18 + local.tee $5 call $std/array/isArraysEqual i32.eqz if @@ -15891,22 +15852,22 @@ i32.const 6832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $2 + local.set $18 i32.const 0 global.set $~argumentsLength - local.get $2 + local.get $18 call $~lib/array/Array#sort i32.const 6912 call $~lib/rt/pure/__release call $~lib/rt/pure/__release - local.get $2 + local.get $18 i32.const 8 i32.const 3 i32.const 10 i32.const 6944 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $14 + local.tee $6 call $std/array/isArraysEqual i32.eqz if @@ -15923,23 +15884,23 @@ i32.const 7024 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $3 + local.set $19 i32.const 0 global.set $~argumentsLength - local.get $3 + local.get $19 i32.const 7072 call $~lib/array/Array#sort i32.const 7072 call $~lib/rt/pure/__release call $~lib/rt/pure/__release - local.get $3 + local.get $19 i32.const 5 i32.const 2 i32.const 3 i32.const 7104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $20 + local.tee $4 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15957,21 +15918,21 @@ i32.const 7152 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $4 + local.set $12 i32.const 0 global.set $~argumentsLength - local.get $4 + local.get $12 i32.const 0 call $~lib/array/Array#sort@varargs call $~lib/rt/pure/__release - local.get $4 + local.get $12 i32.const 5 i32.const 2 i32.const 7 i32.const 7232 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $19 + local.tee $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15989,62 +15950,62 @@ i32.const 7280 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $16 + local.set $7 i32.const 1 i32.const 2 i32.const 3 i32.const 7296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $5 + local.set $13 i32.const 2 i32.const 2 i32.const 3 i32.const 7328 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $6 + local.set $14 i32.const 4 i32.const 2 i32.const 3 i32.const 7360 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $8 + local.set $15 i32.const 4 i32.const 2 i32.const 3 i32.const 7392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $0 + local.set $11 i32.const 64 call $std/array/createReverseOrderedArray - local.set $7 + local.set $16 i32.const 128 call $std/array/createReverseOrderedArray - local.set $9 + local.set $2 i32.const 1024 call $std/array/createReverseOrderedArray - local.set $11 + local.set $10 i32.const 10000 call $std/array/createReverseOrderedArray - local.set $13 + local.set $8 i32.const 512 call $std/array/createRandomOrderedArray - local.set $17 - local.get $16 + local.set $9 + local.get $7 call $std/array/assertSortedDefault - local.get $5 + local.get $13 call $std/array/assertSortedDefault - local.get $5 + local.get $13 i32.const 1 i32.const 2 i32.const 3 i32.const 7456 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $21 + local.tee $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16056,16 +16017,16 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $14 call $std/array/assertSortedDefault - local.get $6 + local.get $14 i32.const 2 i32.const 2 i32.const 3 i32.const 7488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 + local.tee $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16077,10 +16038,10 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $15 call $std/array/assertSortedDefault - local.get $8 - local.get $0 + local.get $15 + local.get $11 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16092,10 +16053,10 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $16 call $std/array/assertSortedDefault - local.get $7 - local.get $0 + local.get $16 + local.get $11 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -16107,10 +16068,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 call $std/array/assertSortedDefault - local.get $9 - local.get $0 + local.get $2 + local.get $11 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -16122,10 +16083,10 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $10 call $std/array/assertSortedDefault + local.get $10 local.get $11 - local.get $0 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -16137,10 +16098,10 @@ call $~lib/builtins/abort unreachable end - local.get $13 + local.get $8 call $std/array/assertSortedDefault - local.get $13 - local.get $0 + local.get $8 + local.get $11 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -16152,70 +16113,70 @@ call $~lib/builtins/abort unreachable end - local.get $17 + local.get $9 call $std/array/assertSortedDefault - local.get $1 - call $~lib/rt/pure/__release - local.get $18 + local.get $17 call $~lib/rt/pure/__release - local.get $2 + local.get $5 call $~lib/rt/pure/__release - local.get $14 + local.get $18 call $~lib/rt/pure/__release - local.get $3 + local.get $6 call $~lib/rt/pure/__release - local.get $20 + local.get $19 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release - local.get $19 + local.get $12 call $~lib/rt/pure/__release - local.get $16 + local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $7 call $~lib/rt/pure/__release - local.get $6 + local.get $13 call $~lib/rt/pure/__release - local.get $8 + local.get $14 call $~lib/rt/pure/__release - local.get $0 + local.get $15 call $~lib/rt/pure/__release - local.get $7 + local.get $11 call $~lib/rt/pure/__release - local.get $9 + local.get $16 call $~lib/rt/pure/__release - local.get $11 + local.get $2 call $~lib/rt/pure/__release - local.get $13 + local.get $10 call $~lib/rt/pure/__release - local.get $17 + local.get $8 call $~lib/rt/pure/__release - local.get $21 + local.get $9 call $~lib/rt/pure/__release - local.get $22 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 call $~lib/rt/pure/__release i32.const 64 call $std/array/createRandomOrderedArray - local.set $0 + local.set $1 i32.const 257 call $std/array/createRandomOrderedArray - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 7520 call $std/array/assertSorted - local.get $0 + local.get $1 i32.const 7552 call $std/array/assertSorted - local.get $1 + local.get $0 i32.const 7584 call $std/array/assertSorted - local.get $1 + local.get $0 i32.const 7616 call $std/array/assertSorted - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release call $std/array/createReverseOrderedNestedArray local.tee $0 i32.const 7648 @@ -16234,85 +16195,85 @@ i32.const 7856 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $5 + local.set $10 i32.const 7 i32.const 2 i32.const 27 i32.const 7904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $8 + local.set $9 i32.const 1 global.set $~argumentsLength block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $5 + local.get $10 call $~lib/rt/pure/__retain - local.tee $7 + local.tee $3 i32.const 7952 call $~lib/rt/pure/__retain - local.tee $6 + local.tee $4 call $~lib/array/Array<~lib/array/Array>#sort - local.tee $9 + local.tee $1 call $~lib/rt/pure/__retain - local.set $0 - local.get $6 + local.set $8 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 + local.set $7 i32.const 1 - local.set $1 - local.get $0 + local.set $2 + local.get $8 i32.load offset=12 - local.set $11 + local.set $0 loop $for-loop|00 - local.get $1 - local.get $11 + local.get $2 + local.get $0 i32.lt_s if - local.get $0 - local.get $1 + local.get $8 + local.get $2 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $1 + local.set $5 + local.get $8 + local.get $2 call $~lib/array/Array#__get - local.set $4 + local.set $6 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $2 + local.get $5 + local.get $6 + local.get $7 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if - local.get $0 + local.get $8 call $~lib/rt/pure/__release - local.get $2 + local.get $7 call $~lib/rt/pure/__release - local.get $3 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $6 call $~lib/rt/pure/__release i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null> end - local.get $3 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $6 call $~lib/rt/pure/__release - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|00 end end - local.get $0 + local.get $8 call $~lib/rt/pure/__release - local.get $2 + local.get $7 call $~lib/rt/pure/__release i32.const 1 end @@ -16325,16 +16286,16 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $1 call $~lib/rt/pure/__release - local.get $7 + local.get $3 call $~lib/rt/pure/__release - local.get $6 + local.get $4 call $~lib/rt/pure/__release i32.const 7952 call $~lib/rt/pure/__release - local.get $5 - local.get $8 + local.get $10 + local.get $9 call $std/array/isArraysEqual<~lib/string/String|null> i32.eqz if @@ -16346,32 +16307,33 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const 0 i32.const 400 call $~lib/array/Array<~lib/string/String>#constructor - local.set $1 + local.set $8 loop $for-loop|06 - local.get $0 + local.get $2 i32.const 400 i32.lt_s if - local.get $0 - local.set $3 call $~lib/math/NativeMath.random f64.const 32 f64.mul i32.trunc_f64_s - local.set $7 + local.set $5 i32.const 0 - local.set $6 + local.set $7 i32.const 7840 - local.set $0 - loop $for-loop|01 - local.get $6 + local.set $3 + loop $for-loop|049 local.get $7 + local.get $5 i32.lt_s if + local.get $3 + local.tee $1 + local.tee $0 block $__inlined_func$~lib/string/String#charAt (result i32) i32.const 7840 call $~lib/math/NativeMath.random @@ -16381,7 +16343,7 @@ f64.mul f64.floor i32.trunc_f64_s - local.tee $2 + local.tee $6 i32.const 6512 call $~lib/string/String#get:length i32.ge_u @@ -16391,7 +16353,7 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $4 - local.get $2 + local.get $6 i32.const 1 i32.shl i32.const 6512 @@ -16401,58 +16363,55 @@ local.get $4 call $~lib/rt/pure/__retain end - local.set $2 - local.get $0 local.tee $4 - local.get $0 - local.get $2 call $~lib/string/String.__concat - local.tee $9 - local.tee $0 + local.tee $6 + local.tee $3 + local.get $0 i32.ne if - local.get $0 + local.get $3 call $~lib/rt/pure/__retain - local.set $0 - local.get $4 + local.set $3 + local.get $1 call $~lib/rt/pure/__release end - local.get $2 - call $~lib/rt/pure/__release - local.get $9 + local.get $4 call $~lib/rt/pure/__release local.get $6 + call $~lib/rt/pure/__release + local.get $7 i32.const 1 i32.add - local.set $6 - br $for-loop|01 + local.set $7 + br $for-loop|049 end end - local.get $1 + local.get $8 + local.get $2 local.get $3 - local.get $0 call $~lib/array/Array<~lib/array/Array>#__set - local.get $0 - call $~lib/rt/pure/__release local.get $3 + call $~lib/rt/pure/__release + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|06 end end i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $8 i32.const 8016 call $std/array/assertSorted<~lib/array/Array> i32.const 8016 call $~lib/rt/pure/__release - local.get $5 + local.get $10 call $~lib/rt/pure/__release - local.get $8 + local.get $9 call $~lib/rt/pure/__release - local.get $1 + local.get $8 call $~lib/rt/pure/__release i32.const 2 i32.const 0 @@ -16460,15 +16419,15 @@ i32.const 8048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $12 i32.load offset=4 - local.get $0 + local.get $12 i32.load offset=12 call $~lib/util/string/joinBooleanArray - local.set $1 + local.set $13 i32.const 8144 call $~lib/rt/pure/__release - local.get $1 + local.get $13 i32.const 8176 call $~lib/string/String.__eq i32.eqz @@ -16486,7 +16445,7 @@ i32.const 8224 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $6 + local.tee $10 i32.const 7840 call $~lib/array/Array#join local.tee $8 @@ -16528,10 +16487,10 @@ i32.const 8672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $11 + local.tee $5 i32.const 8704 call $~lib/array/Array#join - local.tee $13 + local.tee $6 i32.const 8736 call $~lib/string/String.__eq i32.eqz @@ -16549,15 +16508,15 @@ i32.const 8800 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $14 i32.load offset=4 - local.get $2 + local.get $14 i32.load offset=12 call $~lib/util/string/joinFloatArray - local.set $3 + local.set $15 i32.const 8864 call $~lib/rt/pure/__release - local.get $3 + local.get $15 i32.const 9952 call $~lib/string/String.__eq i32.eqz @@ -16575,10 +16534,10 @@ i32.const 10080 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $16 + local.tee $4 i32.const 7840 call $~lib/array/Array<~lib/string/String|null>#join - local.tee $17 + local.tee $3 i32.const 10048 call $~lib/string/String.__eq i32.eqz @@ -16596,22 +16555,22 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $16 i32.load offset=4 - local.tee $5 + local.tee $0 i32.const 0 call $std/array/Ref#constructor i32.store - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 call $std/array/Ref#constructor i32.store offset=8 - local.get $4 + local.get $16 call $~lib/array/Array#join - local.tee $18 + local.tee $1 i32.const 10160 call $~lib/string/String.__eq i32.eqz @@ -16629,19 +16588,19 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.tee $2 i32.load offset=4 - local.tee $14 + local.tee $0 i32.const 0 call $std/array/Ref#constructor i32.store - local.get $14 + local.get $0 i32.const 0 call $std/array/Ref#constructor i32.store offset=4 - local.get $5 + local.get $2 call $~lib/array/Array#join - local.tee $14 + local.tee $0 i32.const 10240 call $~lib/string/String.__eq i32.eqz @@ -16653,11 +16612,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $12 call $~lib/rt/pure/__release - local.get $1 + local.get $13 call $~lib/rt/pure/__release - local.get $6 + local.get $10 call $~lib/rt/pure/__release local.get $8 call $~lib/rt/pure/__release @@ -16665,25 +16624,25 @@ call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release - local.get $11 + local.get $5 call $~lib/rt/pure/__release - local.get $13 + local.get $6 call $~lib/rt/pure/__release - local.get $2 + local.get $14 call $~lib/rt/pure/__release - local.get $3 + local.get $15 call $~lib/rt/pure/__release - local.get $16 + local.get $4 call $~lib/rt/pure/__release - local.get $17 + local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $16 call $~lib/rt/pure/__release - local.get $18 + local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $2 call $~lib/rt/pure/__release - local.get $14 + local.get $0 call $~lib/rt/pure/__release i32.const 0 i32.const 2 @@ -16691,29 +16650,29 @@ i32.const 10320 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $3 + local.set $21 i32.const 1 i32.const 2 i32.const 3 i32.const 10336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $4 + local.set $22 i32.const 2 i32.const 2 i32.const 3 i32.const 10368 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $5 + local.set $23 i32.const 4 i32.const 2 i32.const 3 i32.const 10400 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $6 - local.get $3 + local.set $24 + local.get $21 i32.const 8144 call $~lib/array/Array#join local.tee $0 @@ -16729,11 +16688,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $22 i32.const 8144 call $~lib/array/Array#join local.tee $0 - local.set $22 + local.set $8 local.get $0 i32.const 10048 call $~lib/string/String.__eq @@ -16746,11 +16705,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $23 i32.const 8144 call $~lib/array/Array#join local.tee $0 - local.set $24 + local.set $7 local.get $0 i32.const 10432 call $~lib/string/String.__eq @@ -16763,11 +16722,11 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $24 i32.const 8144 call $~lib/array/Array#join local.tee $0 - local.set $25 + local.set $9 local.get $0 i32.const 10464 call $~lib/string/String.__eq @@ -16786,15 +16745,15 @@ i32.const 10496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 + local.tee $11 i32.load offset=4 - local.get $8 + local.get $11 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.set $7 + local.set $17 i32.const 8144 call $~lib/rt/pure/__release - local.get $7 + local.get $17 i32.const 10528 call $~lib/string/String.__eq i32.eqz @@ -16812,15 +16771,15 @@ i32.const 10560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $9 + local.tee $18 i32.load offset=4 - local.get $9 + local.get $18 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.set $11 + local.set $19 i32.const 8144 call $~lib/rt/pure/__release - local.get $11 + local.get $19 i32.const 10592 call $~lib/string/String.__eq i32.eqz @@ -16838,15 +16797,15 @@ i32.const 10640 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $13 + local.tee $12 i32.load offset=4 - local.get $13 + local.get $12 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.set $16 + local.set $13 i32.const 8144 call $~lib/rt/pure/__release - local.get $16 + local.get $13 i32.const 10688 call $~lib/string/String.__eq i32.eqz @@ -16864,15 +16823,15 @@ i32.const 10752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $17 + local.tee $14 i32.load offset=4 - local.get $17 + local.get $14 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.set $18 + local.set $15 i32.const 8144 call $~lib/rt/pure/__release - local.get $18 + local.get $15 i32.const 10800 call $~lib/string/String.__eq i32.eqz @@ -16890,11 +16849,11 @@ i32.const 10912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $27 + local.tee $5 i32.const 8144 call $~lib/array/Array<~lib/string/String|null>#join local.tee $0 - local.set $28 + local.set $6 local.get $0 i32.const 10960 call $~lib/string/String.__eq @@ -16913,11 +16872,11 @@ i32.const 11072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 + local.tee $4 i32.const 8144 call $~lib/array/Array<~lib/string/String|null>#join local.tee $0 - local.set $30 + local.set $3 local.get $0 i32.const 11104 call $~lib/string/String.__eq @@ -16936,9 +16895,9 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $26 i32.load offset=4 - local.tee $1 + local.tee $0 i32.const 2 i32.const 2 i32.const 3 @@ -16946,7 +16905,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $1 + local.get $0 i32.const 2 i32.const 2 i32.const 3 @@ -16954,15 +16913,15 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $0 + local.get $26 i32.load offset=4 - local.get $0 + local.get $26 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.set $14 + local.set $16 i32.const 8144 call $~lib/rt/pure/__release - local.get $14 + local.get $16 i32.const 11200 call $~lib/string/String.__eq i32.eqz @@ -16980,9 +16939,9 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $27 i32.load offset=4 - local.tee $2 + local.tee $0 i32.const 2 i32.const 0 i32.const 6 @@ -16990,7 +16949,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $2 + local.get $0 i32.const 2 i32.const 0 i32.const 6 @@ -16998,15 +16957,15 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $1 + local.get $27 i32.load offset=4 - local.get $1 + local.get $27 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.set $20 + local.set $2 i32.const 8144 call $~lib/rt/pure/__release - local.get $20 + local.get $2 i32.const 11200 call $~lib/string/String.__eq i32.eqz @@ -17024,7 +16983,7 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $20 i32.load offset=4 i32.const 1 i32.const 2 @@ -17032,7 +16991,7 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $31 + local.tee $0 i32.load offset=4 i32.const 1 i32.const 2 @@ -17041,17 +17000,17 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $31 + local.get $0 i32.store - local.get $2 + local.get $20 i32.load offset=4 - local.get $2 + local.get $20 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - local.set $19 + local.set $0 i32.const 8144 call $~lib/rt/pure/__release - local.get $19 + local.get $0 i32.const 10048 call $~lib/string/String.__eq i32.eqz @@ -17063,20 +17022,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + local.get $21 call $~lib/rt/pure/__release local.get $22 call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release local.get $24 call $~lib/rt/pure/__release - local.get $25 call $~lib/rt/pure/__release local.get $8 call $~lib/rt/pure/__release @@ -17086,27 +17039,33 @@ call $~lib/rt/pure/__release local.get $11 call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release local.get $17 call $~lib/rt/pure/__release local.get $18 call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 + local.get $19 call $~lib/rt/pure/__release - local.get $29 + local.get $12 call $~lib/rt/pure/__release - local.get $30 + local.get $13 call $~lib/rt/pure/__release local.get $14 call $~lib/rt/pure/__release - local.get $20 + local.get $15 call $~lib/rt/pure/__release - local.get $19 + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $0 call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/rt/pure/__release @@ -17118,7 +17077,7 @@ call $~lib/rt/pure/__retain local.tee $5 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.const 2 i32.const 3 @@ -17126,7 +17085,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $3 + local.get $0 i32.const 3 i32.const 2 i32.const 3 @@ -17134,7 +17093,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $3 + local.get $0 i32.const 3 i32.const 2 i32.const 3 @@ -17142,7 +17101,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=8 - local.get $3 + local.get $0 i32.const 3 i32.const 2 i32.const 3 @@ -17164,15 +17123,17 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $3 loop $for-loop|1 - local.get $12 + local.get $3 i32.const 10 i32.lt_s if local.get $6 - local.get $12 + local.get $3 call $~lib/array/Array#__get - local.get $12 + local.get $3 i32.ne if i32.const 0 @@ -17182,10 +17143,10 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $3 i32.const 1 i32.add - local.set $12 + local.set $3 br $for-loop|1 end end @@ -17195,9 +17156,9 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 + local.tee $4 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.const 2 i32.const 27 @@ -17205,7 +17166,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $3 + local.get $0 i32.const 3 i32.const 2 i32.const 27 @@ -17213,7 +17174,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $3 + local.get $0 i32.const 3 i32.const 2 i32.const 27 @@ -17221,7 +17182,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=8 - local.get $3 + local.get $0 i32.const 1 i32.const 2 i32.const 27 @@ -17229,17 +17190,17 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=12 - local.get $8 + local.get $4 call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat - local.set $3 + local.set $7 i32.const 8 i32.const 2 i32.const 27 i32.const 11808 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $9 + local.get $7 i32.load offset=12 i32.const 8 i32.ne @@ -17252,21 +17213,21 @@ unreachable end i32.const 0 - local.set $12 + local.set $3 loop $for-loop|2 - local.get $12 - local.get $4 + local.get $3 + local.get $9 i32.load offset=12 i32.lt_s if + local.get $7 local.get $3 - local.get $12 call $~lib/array/Array#__get - local.tee $7 - local.get $4 - local.get $12 + local.tee $1 + local.get $9 + local.get $3 call $~lib/array/Array#__get - local.tee $9 + local.tee $0 call $~lib/string/String.__eq i32.eqz if @@ -17277,14 +17238,14 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $1 call $~lib/rt/pure/__release - local.get $9 + local.get $0 call $~lib/rt/pure/__release - local.get $12 + local.get $3 i32.const 1 i32.add - local.set $12 + local.set $3 br $for-loop|2 end end @@ -17294,9 +17255,9 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $12 + local.tee $1 i32.load offset=4 - local.tee $7 + local.tee $0 i32.const 0 i32.const 2 i32.const 3 @@ -17304,7 +17265,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $7 + local.get $0 i32.const 0 i32.const 2 i32.const 3 @@ -17312,9 +17273,9 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $12 + local.get $1 call $~lib/array/Array<~lib/array/Array>#flat - local.tee $7 + local.tee $0 i32.load offset=12 if i32.const 0 @@ -17324,33 +17285,33 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $1 call $~lib/rt/pure/__release - local.get $7 + local.get $0 call $~lib/rt/pure/__release - local.get $10 + local.get $25 call $~lib/rt/pure/__release - local.get $23 + local.get $29 call $~lib/rt/pure/__release - local.get $15 + local.get $28 call $~lib/rt/pure/__release - local.get $26 + local.get $32 call $~lib/rt/pure/__release - local.get $0 + local.get $26 call $~lib/rt/pure/__release - local.get $1 + local.get $27 call $~lib/rt/pure/__release - local.get $2 + local.get $20 call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $8 + local.get $4 call $~lib/rt/pure/__release - local.get $3 + local.get $7 call $~lib/rt/pure/__release - local.get $4 + local.get $9 call $~lib/rt/pure/__release ) (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) @@ -17923,16 +17884,14 @@ ) (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + local.get $2 local.get $0 i32.load offset=12 local.tee $3 - if (result i32) - local.get $2 - local.get $3 - i32.ge_s - else - i32.const 1 - end + i32.ge_s + i32.const 1 + local.get $3 + select if i32.const -1 return @@ -19117,16 +19076,14 @@ local.get $1 call $~lib/rt/pure/__retain local.set $1 + local.get $2 local.get $0 i32.load offset=12 local.tee $3 - if (result i32) - local.get $2 - local.get $3 - i32.ge_s - else - i32.const 1 - end + i32.ge_s + i32.const 1 + local.get $3 + select if local.get $1 call $~lib/rt/pure/__release @@ -19218,21 +19175,20 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $2 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $6 + local.tee $5 i32.add - local.tee $2 + local.tee $3 i32.const 268435452 i32.gt_u if @@ -19243,78 +19199,80 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 2 i32.const 29 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.tee $6 i32.load offset=4 - local.set $2 - local.get $4 + local.set $3 + local.get $2 i32.const 2 i32.shl - local.set $4 + local.set $2 local.get $0 i32.load offset=4 local.set $0 loop $for-loop|0 - local.get $3 local.get $4 + local.get $2 i32.lt_u if - local.get $2 local.get $3 + local.get $4 i32.add local.get $0 - local.get $3 + local.get $4 i32.add i32.load call $~lib/rt/pure/__retain i32.store - 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 $2 - local.get $4 + local.get $3 i32.add - local.set $0 + local.set $4 local.get $1 i32.load offset=4 local.set $3 - local.get $6 + local.get $5 i32.const 2 i32.shl local.set $2 + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $5 + local.get $0 local.get $2 i32.lt_u if local.get $0 - local.get $5 + local.get $4 i32.add + local.get $0 local.get $3 - local.get $5 i32.add i32.load call $~lib/rt/pure/__retain i32.store - local.get $5 + local.get $0 i32.const 4 i32.add - local.set $5 + local.set $0 br $for-loop|1 end end local.get $1 call $~lib/rt/pure/__release - local.get $7 + local.get $6 ) (func $~lib/array/Array<~lib/string/String>#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -19323,10 +19281,12 @@ local.get $0 i32.load offset=4 local.set $5 - local.get $3 local.get $0 i32.load offset=12 local.tee $4 + local.set $6 + local.get $3 + local.get $4 local.get $3 local.get $4 i32.lt_s @@ -19349,7 +19309,7 @@ local.get $1 local.get $4 local.get $1 - local.get $4 + local.get $6 i32.lt_s select end @@ -19704,7 +19664,6 @@ (func $~lib/array/Array<~lib/string/String>#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) local.get $0 i32.load offset=12 local.set $3 @@ -19767,36 +19726,38 @@ call $~lib/rt/pure/__retain local.tee $3 i32.load offset=4 - local.set $5 + local.set $4 local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add + local.set $1 + i32.const 0 local.set $0 local.get $2 i32.const 2 i32.shl - local.set $1 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $1 + local.get $0 + local.get $2 i32.lt_u if + local.get $0 local.get $4 - local.get $5 i32.add local.get $0 - local.get $4 + local.get $1 i32.add i32.load call $~lib/rt/pure/__retain i32.store - local.get $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 br $while-continue|0 end end diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index a9850b2d24..74e1c922e2 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -60,15 +60,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -92,23 +90,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -123,25 +121,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -153,24 +151,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -179,7 +177,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -189,7 +187,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -343,15 +341,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -599,16 +595,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -620,18 +616,19 @@ unreachable end i32.const 1440 - local.tee $0 + local.set $1 + i32.const 1440 i32.const 0 i32.store i32.const 3008 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 1440 @@ -645,10 +642,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -663,10 +660,10 @@ 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 @@ -679,7 +676,7 @@ i32.const 1440 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -692,6 +689,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -708,11 +706,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 3dc4bc8c3a..f710a3aca4 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -68,15 +68,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -100,23 +98,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -131,25 +129,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -161,24 +159,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -187,7 +185,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -197,7 +195,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -351,15 +349,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -607,16 +603,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -628,18 +624,19 @@ unreachable end i32.const 1520 - local.tee $0 + local.set $1 + i32.const 1520 i32.const 0 i32.store i32.const 3088 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 1520 @@ -653,10 +650,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -671,10 +668,10 @@ 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 @@ -687,7 +684,7 @@ i32.const 1520 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -700,6 +697,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -716,11 +714,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 90addc1de8..826e9f51d9 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -67,15 +67,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -99,23 +97,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -130,25 +128,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -160,24 +158,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -186,7 +184,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -196,7 +194,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -350,15 +348,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -606,16 +602,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -627,18 +623,19 @@ unreachable end i32.const 1568 - local.tee $0 + local.set $1 + i32.const 1568 i32.const 0 i32.store i32.const 3136 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 1568 @@ -652,10 +649,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -670,10 +667,10 @@ 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 @@ -686,7 +683,7 @@ i32.const 1568 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 @@ -723,6 +720,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -739,11 +737,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -1379,55 +1377,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i32.load8_s i32.store8 - local.get $3 local.get $2 + local.get $5 i32.load offset=4 i32.store offset=4 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i32.load8_s call $~lib/util/hash/hash8 local.get $1 @@ -1435,72 +1434,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=8 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 12 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -1867,10 +1863,10 @@ local.get $6 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $4 local.get $5 i32.const 3 i32.and - local.get $4 i32.or i32.store local.get $1 @@ -2406,55 +2402,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i32.load8_s i32.store8 - local.get $3 local.get $2 + local.get $5 i32.load8_s offset=1 i32.store8 offset=1 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i32.load8_s call $~lib/util/hash/hash8 local.get $1 @@ -2462,72 +2459,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=4 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 8 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -2751,55 +2745,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i32.load i32.store - local.get $3 local.get $2 + local.get $5 i32.load offset=4 i32.store offset=4 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i32.load call $~lib/util/hash/hash32 local.get $1 @@ -2807,72 +2802,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=8 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 12 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -3611,55 +3603,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i32.load8_u i32.store8 - local.get $3 local.get $2 + local.get $5 i32.load offset=4 i32.store offset=4 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i32.load8_u call $~lib/util/hash/hash8 local.get $1 @@ -3667,72 +3660,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=8 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 12 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -3977,55 +3967,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i32.load8_u i32.store8 - local.get $3 local.get $2 + local.get $5 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i32.load8_u call $~lib/util/hash/hash8 local.get $1 @@ -4033,72 +4024,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=4 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 8 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -4881,55 +4869,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i32.load16_s i32.store16 - local.get $3 local.get $2 + local.get $5 i32.load offset=4 i32.store offset=4 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i32.load16_s call $~lib/util/hash/hash16 local.get $1 @@ -4937,72 +4926,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=8 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 12 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -5305,55 +5291,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i32.load16_s i32.store16 - local.get $3 local.get $2 + local.get $5 i32.load16_s offset=2 i32.store16 offset=2 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i32.load16_s call $~lib/util/hash/hash16 local.get $1 @@ -5361,72 +5348,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=4 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 8 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -6178,55 +6162,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i32.load16_u i32.store16 - local.get $3 local.get $2 + local.get $5 i32.load offset=4 i32.store offset=4 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i32.load16_u call $~lib/util/hash/hash16 local.get $1 @@ -6234,72 +6219,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=8 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 12 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -6548,55 +6530,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i32.load16_u i32.store16 - local.get $3 local.get $2 + local.get $5 i32.load16_u offset=2 i32.store16 offset=2 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i32.load16_u call $~lib/util/hash/hash16 local.get $1 @@ -6604,72 +6587,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=4 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 8 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -8631,55 +8611,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i64.load i64.store - local.get $3 local.get $2 + local.get $5 i32.load offset=8 i32.store offset=8 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i64.load call $~lib/util/hash/hash64 local.get $1 @@ -8687,72 +8668,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=12 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 16 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 16 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result i32) @@ -9120,55 +9098,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 - i32.load offset=16 - i32.const 1 + local.get $6 + local.set $5 + local.get $6 + i32.load offset=16 + i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 i64.load i64.store - local.get $3 local.get $2 + local.get $5 i64.load offset=8 i64.store offset=8 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 i64.load call $~lib/util/hash/hash64 local.get $1 @@ -9176,72 +9155,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=16 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 24 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 24 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result i32) @@ -10593,55 +10569,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 f32.load f32.store - local.get $3 local.get $2 + local.get $5 i32.load offset=4 i32.store offset=4 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 f32.load i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -10650,72 +10627,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=8 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 12 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) (result i32) @@ -10996,55 +10970,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 f32.load f32.store - local.get $3 local.get $2 + local.get $5 f32.load offset=4 f32.store offset=4 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 f32.load i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -11053,72 +11028,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=8 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 12 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 f32) (result i32) @@ -11829,55 +11801,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 f64.load f64.store - local.get $3 local.get $2 + local.get $5 i32.load offset=8 i32.store offset=8 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 f64.load i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -11886,72 +11859,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=12 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 16 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 16 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (result i32) @@ -12232,55 +12202,56 @@ local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $5 + local.set $4 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $6 local.get $0 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $8 - local.get $5 - local.set $3 + local.set $7 + local.get $3 + local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $7 i32.ne if - local.get $4 - local.tee $2 + local.get $6 + local.set $5 + local.get $6 i32.load offset=16 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $5 f64.load f64.store - local.get $3 local.get $2 + local.get $5 f64.load offset=8 f64.store offset=8 - local.get $3 - local.get $6 local.get $2 + local.get $4 + local.get $5 f64.load i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -12289,72 +12260,69 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $5 i32.load i32.store offset=16 + local.get $5 local.get $2 - local.get $3 i32.store - local.get $3 + local.get $2 i32.const 24 i32.add - local.set $3 + local.set $2 end - local.get $4 + local.get $6 i32.const 24 i32.add - local.set $4 + local.set $6 br $while-continue|0 end end - local.get $6 - local.tee $4 - local.get $0 + local.get $4 local.tee $2 + local.get $0 i32.load - local.tee $3 + local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 - local.get $3 + local.set $2 + local.get $6 call $~lib/rt/pure/__release end + local.get $0 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $0 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 - local.get $5 - local.tee $2 - local.get $1 + local.get $3 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 + local.set $1 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - local.get $1 - local.get $7 + local.get $0 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 f64) (result i32) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 900b694d99..f5b08a4674 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -850,21 +850,19 @@ (local $7 f64) i32.const 1 local.set $3 + i32.const 1 local.get $0 i64.reinterpret_f64 i64.const 32 i64.shr_u i32.wrap_i64 local.tee $2 + i32.const 31 + i32.shr_u + local.get $2 i32.const 1071284858 i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end + select if local.get $2 i32.const -1074790400 @@ -1046,6 +1044,7 @@ (local $3 f64) (local $4 f64) (local $5 i32) + i32.const 1 local.get $0 i64.reinterpret_f64 local.tee $2 @@ -1053,15 +1052,12 @@ i64.shr_u i32.wrap_i64 local.tee $1 + i32.const 31 + i32.shr_u + local.get $1 i32.const 1048576 i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end + select if local.get $2 i64.const 1 @@ -1285,18 +1281,16 @@ (local $6 f32) i32.const 1 local.set $3 + i32.const 1 local.get $0 i32.reinterpret_f32 local.tee $2 + i32.const 31 + i32.shr_u + local.get $2 i32.const 1054086096 i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end + select if local.get $2 i32.const -1082130432 @@ -1453,18 +1447,16 @@ (local $2 f32) (local $3 f32) (local $4 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 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end + select if local.get $1 i32.const 1 @@ -2045,7 +2037,7 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $4 + local.tee $3 i32.const 1141899264 i32.ge_u if @@ -2061,11 +2053,11 @@ f64.copysign return end - local.get $4 + local.get $3 i32.const 1071382528 i32.lt_u if - local.get $4 + local.get $3 i32.const 1044381696 i32.lt_u if @@ -2073,16 +2065,16 @@ return end i32.const -1 - local.set $3 + local.set $4 else local.get $0 f64.abs local.set $0 - local.get $4 + local.get $3 i32.const 1072889856 i32.lt_u if (result f64) - local.get $4 + local.get $3 i32.const 1072037888 i32.lt_u if (result f64) @@ -2097,7 +2089,7 @@ f64.div else i32.const 1 - local.set $3 + local.set $4 local.get $0 f64.const 1 f64.sub @@ -2107,12 +2099,12 @@ f64.div end else - local.get $4 + local.get $3 i32.const 1073971200 i32.lt_u if (result f64) i32.const 2 - local.set $3 + local.set $4 local.get $0 f64.const 1.5 f64.sub @@ -2124,7 +2116,7 @@ f64.div else i32.const 3 - local.set $3 + local.set $4 f64.const -1 local.get $0 f64.div @@ -2185,7 +2177,7 @@ f64.add f64.mul local.set $2 - local.get $3 + local.get $4 i32.const 0 i32.lt_s if @@ -2199,12 +2191,9 @@ block $case3|0 block $case2|0 block $case1|0 - local.get $3 - if - local.get $3 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 + block $case0|0 + local.get $4 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 end f64.const 0.4636476090008061 local.get $2 @@ -2280,7 +2269,7 @@ i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $4 + local.tee $3 i32.const 1283457024 i32.ge_u if @@ -2296,11 +2285,11 @@ f32.copysign return end - local.get $4 + local.get $3 i32.const 1054867456 i32.lt_u if - local.get $4 + local.get $3 i32.const 964689920 i32.lt_u if @@ -2308,16 +2297,16 @@ return end i32.const -1 - local.set $3 + local.set $4 else local.get $0 f32.abs local.set $0 - local.get $4 + local.get $3 i32.const 1066926080 i32.lt_u if (result f32) - local.get $4 + local.get $3 i32.const 1060110336 i32.lt_u if (result f32) @@ -2332,7 +2321,7 @@ f32.div else i32.const 1 - local.set $3 + local.set $4 local.get $0 f32.const 1 f32.sub @@ -2342,12 +2331,12 @@ f32.div end else - local.get $4 + local.get $3 i32.const 1075576832 i32.lt_u if (result f32) i32.const 2 - local.set $3 + local.set $4 local.get $0 f32.const 1.5 f32.sub @@ -2359,7 +2348,7 @@ f32.div else i32.const 3 - local.set $3 + local.set $4 f32.const -1 local.get $0 f32.div @@ -2396,7 +2385,7 @@ f32.add f32.mul local.set $2 - local.get $3 + local.get $4 i32.const 0 i32.lt_s if @@ -2410,12 +2399,9 @@ block $case3|0 block $case2|0 block $case1|0 - local.get $3 - if - local.get $3 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 + block $case0|0 + local.get $4 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 end f32.const 0.46364760398864746 local.get $2 @@ -2616,20 +2602,20 @@ i64.const 32 i64.shr_u i32.wrap_i64 - local.set $5 + local.set $4 local.get $6 i32.wrap_i64 + local.set $3 local.get $1 i64.reinterpret_f64 local.tee $6 - i64.const 32 - i64.shr_u i32.wrap_i64 - local.set $4 + local.tee $7 local.get $6 + i64.const 32 + i64.shr_u i32.wrap_i64 - local.tee $7 - local.get $4 + local.tee $5 i32.const 1072693248 i32.sub i32.or @@ -2639,24 +2625,25 @@ call $~lib/math/NativeMath.atan return end - local.get $4 + local.get $5 i32.const 30 i32.shr_u i32.const 2 i32.and - local.get $5 + local.get $4 i32.const 31 i32.shr_u i32.or local.set $2 - local.get $4 + local.get $5 i32.const 2147483647 i32.and - local.set $4 - local.get $5 + local.set $5 + local.get $4 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 + local.get $3 i32.or i32.eqz if @@ -2686,12 +2673,12 @@ end end block $folding-inner0 - local.get $4 + local.get $5 local.get $7 i32.or i32.eqz br_if $folding-inner0 - local.get $4 + local.get $5 i32.const 2146435072 i32.eq if @@ -2707,7 +2694,7 @@ i32.const 2 i32.and select - local.get $5 + local.get $4 i32.const 2146435072 i32.eq select @@ -2721,20 +2708,20 @@ return end i32.const 1 - local.get $5 + local.get $4 i32.const 2146435072 i32.eq - local.get $4 + local.get $5 i32.const 67108864 i32.add - local.get $5 + local.get $4 i32.lt_u select br_if $folding-inner0 - local.get $5 + local.get $4 i32.const 67108864 i32.add - local.get $4 + local.get $5 i32.lt_u i32.const 0 local.get $2 @@ -2901,31 +2888,41 @@ i32.const 2139095040 i32.eq if - f32.const 2.356194496154785 - f32.const 0.7853981852531433 - local.get $2 - i32.const 2 - i32.and - select - f32.const 3.1415927410125732 - f32.const 0 - local.get $2 - i32.const 2 - i32.and - select local.get $3 i32.const 2139095040 i32.eq - select - local.set $0 - local.get $0 - f32.neg - local.get $0 - local.get $2 - i32.const 1 - i32.and - select - return + if + f32.const 2.356194496154785 + f32.const 0.7853981852531433 + local.get $2 + i32.const 2 + i32.and + select + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 1 + i32.and + select + return + else + f32.const 3.1415927410125732 + f32.const 0 + local.get $2 + i32.const 2 + i32.and + select + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 1 + i32.and + select + return + end + unreachable end i32.const 1 local.get $3 @@ -3777,47 +3774,55 @@ end local.set $6 global.get $~lib/math/rempio2_y0 - local.set $3 + local.set $0 global.get $~lib/math/rempio2_y1 local.set $4 local.get $6 i32.const 1 i32.and if (result f64) - local.get $3 - local.get $3 - f64.mul - local.tee $0 - local.get $3 + local.get $0 + local.get $0 f64.mul - local.set $1 - local.get $3 + local.tee $3 local.get $0 - f64.const 0.5 - local.get $4 f64.mul - local.get $1 + local.tee $1 + f64.const -0.16666666666666632 + local.get $3 f64.const 0.00833333333332249 - local.get $0 + local.get $3 f64.const -1.984126982985795e-04 - local.get $0 + local.get $3 f64.const 2.7557313707070068e-06 f64.mul f64.add f64.mul f64.add - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 + local.get $3 f64.mul f64.mul f64.const -2.5050760253406863e-08 - local.get $0 + local.get $3 f64.const 1.58969099521155e-10 f64.mul f64.add f64.mul f64.add + local.tee $7 + f64.mul + f64.add + f64.mul + drop + local.get $0 + local.get $3 + f64.const 0.5 + local.get $4 + f64.mul + local.get $1 + local.get $7 f64.mul f64.sub f64.mul @@ -3831,10 +3836,10 @@ else f64.const 1 f64.const 0.5 - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.mul - local.tee $0 + local.tee $3 f64.mul local.tee $1 f64.sub @@ -3844,28 +3849,28 @@ f64.sub local.get $1 f64.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.const 0.0416666666666666 - local.get $0 + local.get $3 f64.const -0.001388888888887411 - local.get $0 + local.get $3 f64.const 2.480158728947673e-05 f64.mul f64.add f64.mul f64.add f64.mul - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.mul local.tee $1 local.get $1 f64.mul f64.const -2.7557314351390663e-07 - local.get $0 + local.get $3 f64.const 2.087572321298175e-09 - local.get $0 + local.get $3 f64.const -1.1359647557788195e-11 f64.mul f64.add @@ -3874,15 +3879,14 @@ f64.mul f64.add f64.mul - local.get $3 + local.get $0 local.get $4 f64.mul f64.sub f64.add f64.add end - local.set $0 - local.get $0 + local.tee $0 f64.neg local.get $0 local.get $6 @@ -4164,8 +4168,7 @@ f64.add f32.demote_f64 end - local.set $0 - local.get $0 + local.tee $0 f32.neg local.get $0 local.get $1 @@ -5179,8 +5182,9 @@ (local $5 i64) (local $6 i32) (local $7 f64) - block $~lib/util/math/exp2_lut|inlined.0 + block $~lib/util/math/exp2_lut|inlined.0 (result f64) local.get $0 + local.tee $2 i64.reinterpret_f64 local.tee $3 i64.const 52 @@ -5194,48 +5198,45 @@ i32.const 63 i32.ge_u if + f64.const 1 local.get $1 i32.const 969 i32.sub i32.const -2147483648 i32.ge_u - if - f64.const 1 - local.set $2 - br $~lib/util/math/exp2_lut|inlined.0 - end + br_if $~lib/util/math/exp2_lut|inlined.0 + drop local.get $1 i32.const 1033 i32.ge_u if + f64.const 0 local.get $3 i64.const -4503599627370496 i64.eq br_if $~lib/util/math/exp2_lut|inlined.0 + drop + f64.const 1 + local.get $2 + f64.add local.get $1 i32.const 2047 i32.ge_u - if - f64.const 1 - local.get $0 - f64.add - local.set $2 - br $~lib/util/math/exp2_lut|inlined.0 - end + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + f64.const inf local.get $3 i64.const 63 i64.shr_u i64.eqz - if - f64.const inf - local.set $2 - br $~lib/util/math/exp2_lut|inlined.0 - else - local.get $3 - i64.const -4570929321408987136 - i64.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - end + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + f64.const 0 + local.get $3 + i64.const -4570929321408987136 + i64.ge_u + br_if $~lib/util/math/exp2_lut|inlined.0 + drop end i32.const 0 local.get $1 @@ -5247,10 +5248,10 @@ select local.set $1 end - local.get $0 + local.get $2 f64.const 52776558133248 f64.add - local.tee $2 + local.tee $0 i64.reinterpret_f64 local.tee $5 i64.const 127 @@ -5269,8 +5270,8 @@ i64.shl i64.add local.set $3 - local.get $0 local.get $2 + local.get $0 f64.const 52776558133248 f64.sub f64.sub @@ -5365,7 +5366,6 @@ f64.const 2.2250738585072014e-308 f64.mul end - local.set $2 br $~lib/util/math/exp2_lut|inlined.0 end local.get $3 @@ -5375,9 +5375,7 @@ f64.mul local.get $2 f64.add - local.set $2 end - local.get $2 ) (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) local.get $0 @@ -5398,61 +5396,60 @@ ) (func $~lib/math/NativeMathf.exp2 (param $0 f32) (result f32) (local $1 f64) - (local $2 f32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i64) - local.get $0 - f64.promote_f32 - local.set $1 - block $~lib/util/math/exp2f_lut|inlined.0 + (local $4 f64) + (local $5 i64) + block $~lib/util/math/exp2f_lut|inlined.0 (result f32) + local.get $0 + f64.promote_f32 + local.set $1 local.get $0 i32.reinterpret_f32 - local.tee $3 + local.tee $2 i32.const 20 i32.shr_u i32.const 2047 i32.and - local.tee $4 + local.tee $3 i32.const 1072 i32.ge_u if - local.get $3 + f32.const 0 + local.get $2 i32.const -8388608 i32.eq br_if $~lib/util/math/exp2f_lut|inlined.0 - local.get $4 + drop + local.get $0 + local.get $0 + f32.add + local.get $3 i32.const 2040 i32.ge_u - if - local.get $0 - local.get $0 - f32.add - local.set $2 - br $~lib/util/math/exp2f_lut|inlined.0 - end + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul local.get $0 f32.const 0 f32.gt - if - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.set $2 - br $~lib/util/math/exp2f_lut|inlined.0 - end + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + f32.const 0 local.get $0 f32.const -150 f32.le br_if $~lib/util/math/exp2f_lut|inlined.0 + drop end f64.const 0.6931471806916203 local.get $1 local.get $1 f64.const 211106232532992 f64.add - local.tee $5 + local.tee $4 f64.const 211106232532992 f64.sub f64.sub @@ -5470,9 +5467,9 @@ f64.mul f64.mul f64.add - local.get $5 + local.get $4 i64.reinterpret_f64 - local.tee $6 + local.tee $5 i32.wrap_i64 i32.const 31 i32.and @@ -5481,16 +5478,14 @@ i32.const 3336 i32.add i64.load - local.get $6 + local.get $5 i64.const 47 i64.shl i64.add f64.reinterpret_i64 f64.mul f32.demote_f64 - local.set $2 end - local.get $2 ) (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) local.get $0 @@ -5848,6 +5843,7 @@ (local $9 f64) (local $10 f64) (local $11 f64) + i32.const 1 local.get $0 i64.reinterpret_f64 local.tee $2 @@ -5855,15 +5851,12 @@ i64.shr_u i32.wrap_i64 local.tee $1 + i32.const 31 + i32.shr_u + local.get $1 i32.const 1048576 i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end + select if local.get $2 i64.const 1 @@ -6064,18 +6057,16 @@ (local $4 f32) (local $5 i32) (local $6 f32) + 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 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end + select if local.get $1 i32.const 1 @@ -6255,6 +6246,7 @@ (local $8 i32) (local $9 f64) (local $10 f64) + i32.const 1 local.get $0 i64.reinterpret_f64 local.tee $2 @@ -6262,15 +6254,12 @@ i64.shr_u i32.wrap_i64 local.tee $1 + i32.const 31 + i32.shr_u + local.get $1 i32.const 1048576 i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end + select if local.get $2 i64.const 1 @@ -6463,18 +6452,16 @@ (local $3 f32) (local $4 f32) (local $5 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 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end + select if local.get $1 i32.const 1 @@ -6673,41 +6660,40 @@ (local $6 i64) (local $7 i64) (local $8 i64) - local.get $0 + local.get $1 i64.reinterpret_f64 - local.tee $2 + local.tee $3 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $4 - local.get $1 + local.set $5 + local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $2 + i64.const 63 + i64.shr_u + local.set $7 + i32.const 1 + local.get $1 + local.get $1 + f64.ne + i32.const 1 + local.get $2 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $5 + local.tee $4 + i64.const 2047 + i64.eq local.get $3 i64.const 1 i64.shl local.tee $6 i64.eqz - if (result i32) - i32.const 1 - else - local.get $4 - i64.const 2047 - i64.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f64.ne - end + select + select if local.get $0 local.get $1 @@ -6717,10 +6703,6 @@ f64.div return end - local.get $2 - i64.const 63 - i64.shr_u - local.set $7 block $folding-inner0 local.get $2 i64.const 1 @@ -6894,40 +6876,39 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 + local.get $1 i32.reinterpret_f32 - local.tee $2 + local.tee $3 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $4 - local.get $1 + local.set $5 + local.get $0 i32.reinterpret_f32 - local.tee $3 + local.tee $2 + i32.const -2147483648 + i32.and + local.set $7 + i32.const 1 + local.get $1 + local.get $1 + f32.ne + local.get $2 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $5 + local.tee $4 + i32.const 255 + i32.eq + i32.const 1 local.get $3 i32.const 1 i32.shl local.tee $6 - if (result i32) - local.get $4 - i32.const 255 - i32.eq - else - i32.const 1 - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f32.ne - end + select + select if local.get $0 local.get $1 @@ -6937,10 +6918,6 @@ f32.div return end - local.get $2 - i32.const -2147483648 - i32.and - local.set $7 block $folding-inner0 local.get $2 i32.const 1 @@ -7091,21 +7068,20 @@ (local $3 f64) (local $4 i32) (local $5 i32) - (local $6 f64) - (local $7 i32) + (local $6 i32) + (local $7 f64) (local $8 i32) (local $9 i32) (local $10 f64) (local $11 i32) - (local $12 f64) - (local $13 i64) - (local $14 f64) - (local $15 i32) + (local $12 i32) + (local $13 f64) + (local $14 i64) + (local $15 f64) (local $16 i32) (local $17 f64) (local $18 i32) - (local $19 i32) - (local $20 f64) + (local $19 f64) local.get $1 f64.abs f64.const 2 @@ -7160,30 +7136,30 @@ end local.get $0 i64.reinterpret_f64 - local.tee $13 + local.tee $14 i32.wrap_i64 local.set $18 - local.get $13 + local.get $14 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $15 + local.tee $16 i32.const 2147483647 i32.and local.set $4 local.get $1 i64.reinterpret_f64 - local.tee $13 + local.tee $14 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $8 i32.const 2147483647 i32.and - local.tee $8 - local.get $13 + local.tee $9 + local.get $14 i32.wrap_i64 - local.tee $19 + local.tee $6 i32.or i32.eqz if @@ -7191,14 +7167,14 @@ return end i32.const 1 - local.get $19 + local.get $6 i32.const 0 - local.get $8 + local.get $9 i32.const 2146435072 i32.eq select i32.const 1 - local.get $8 + local.get $9 i32.const 2146435072 i32.gt_s i32.const 1 @@ -7220,51 +7196,51 @@ f64.add return end - local.get $15 + local.get $16 i32.const 0 i32.lt_s if (result i32) - local.get $8 + local.get $9 i32.const 1128267776 i32.ge_s if (result i32) i32.const 2 else - local.get $8 + local.get $9 i32.const 1072693248 i32.ge_s if (result i32) i32.const 52 i32.const 20 - local.get $8 + local.get $9 i32.const 20 i32.shr_s i32.const 1023 i32.sub - local.tee $9 + local.tee $11 i32.const 20 i32.gt_s local.tee $5 select - local.get $9 + local.get $11 i32.sub - local.set $11 + local.set $12 i32.const 2 - local.get $19 - local.get $8 + local.get $6 + local.get $9 local.get $5 select local.tee $5 - local.get $11 + local.get $12 i32.shr_u - local.tee $9 + local.tee $11 i32.const 1 i32.and i32.sub i32.const 0 local.get $5 - local.get $9 local.get $11 + local.get $12 i32.shl i32.eq select @@ -7276,10 +7252,10 @@ i32.const 0 end local.set $5 - local.get $19 + local.get $6 i32.eqz if - local.get $8 + local.get $9 i32.const 2146435072 i32.eq if @@ -7295,18 +7271,18 @@ if local.get $1 f64.const 0 - local.get $7 + local.get $8 i32.const 0 i32.ge_s select return else + f64.const 0 local.get $1 f64.neg - f64.const 0 - local.get $7 + local.get $8 i32.const 0 - i32.lt_s + i32.ge_s select return end @@ -7317,11 +7293,11 @@ end unreachable end - local.get $8 + local.get $9 i32.const 1072693248 i32.eq if - local.get $7 + local.get $8 i32.const 0 i32.ge_s if @@ -7333,7 +7309,7 @@ f64.div return end - local.get $7 + local.get $8 i32.const 1073741824 i32.eq if @@ -7342,11 +7318,11 @@ f64.mul return end - local.get $7 + local.get $8 i32.const 1071644672 i32.eq if - local.get $15 + local.get $16 i32.const 0 i32.ge_s if @@ -7378,12 +7354,12 @@ local.get $3 f64.div local.get $3 - local.get $7 + local.get $8 i32.const 0 i32.lt_s select local.set $3 - local.get $15 + local.get $16 i32.const 0 i32.lt_s if (result f64) @@ -7414,7 +7390,7 @@ return end end - local.get $15 + local.get $16 i32.const 0 i32.lt_s if (result f64) @@ -7439,11 +7415,11 @@ f64.const 1 end local.set $10 - local.get $8 + local.get $9 i32.const 1105199104 i32.gt_s if (result f64) - local.get $8 + local.get $9 i32.const 1139802112 i32.gt_s if @@ -7453,7 +7429,7 @@ if f64.const inf f64.const 0 - local.get $7 + local.get $8 i32.const 0 i32.lt_s select @@ -7465,7 +7441,7 @@ if f64.const inf f64.const 0 - local.get $7 + local.get $8 i32.const 0 i32.gt_s select @@ -7486,7 +7462,7 @@ f64.mul f64.const 1e-300 f64.mul - local.get $7 + local.get $8 i32.const 0 i32.lt_s select @@ -7506,7 +7482,7 @@ f64.mul f64.const 1e-300 f64.mul - local.get $7 + local.get $8 i32.const 0 i32.gt_s select @@ -7544,9 +7520,9 @@ i64.const -4294967296 i64.and f64.reinterpret_i64 - local.set $6 + local.set $7 local.get $0 - local.get $6 + local.get $7 local.get $3 f64.sub f64.sub @@ -7574,7 +7550,7 @@ i32.const 1023 i32.sub i32.add - local.set $7 + local.set $6 local.get $4 i32.const 1048575 i32.and @@ -7584,25 +7560,28 @@ local.set $4 local.get $5 i32.const 235662 - i32.gt_s - if + i32.le_s + if (result i32) + i32.const 0 + else local.get $5 i32.const 767610 i32.lt_s - if + if (result i32) i32.const 1 - local.set $16 else - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 local.get $4 i32.const -1048576 i32.add local.set $4 + i32.const 0 end end + local.set $5 f64.const 0.9617967009544373 local.get $3 i64.reinterpret_f64 @@ -7614,16 +7593,16 @@ i64.shl i64.or f64.reinterpret_i64 - local.tee $6 + local.tee $7 f64.const 1.5 f64.const 1 - local.get $16 + local.get $5 select local.tee $2 f64.sub local.tee $3 f64.const 1 - local.get $6 + local.get $7 local.get $2 f64.add f64.div @@ -7634,29 +7613,29 @@ i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $14 + local.tee $15 f64.const 3 - local.get $14 - local.get $14 + local.get $15 + local.get $15 f64.mul - local.tee $20 + local.tee $19 f64.add local.get $17 local.get $17 f64.mul - local.tee $12 - local.get $12 + local.tee $13 + local.get $13 f64.mul f64.const 0.5999999999999946 - local.get $12 + local.get $13 f64.const 0.4285714285785502 - local.get $12 + local.get $13 f64.const 0.33333332981837743 - local.get $12 + local.get $13 f64.const 0.272728123808534 - local.get $12 + local.get $13 f64.const 0.23066074577556175 - local.get $12 + local.get $13 f64.const 0.20697501780033842 f64.mul f64.add @@ -7671,7 +7650,7 @@ f64.mul local.get $0 local.get $3 - local.get $14 + local.get $15 local.get $4 i32.const 1 i32.shr_s @@ -7679,7 +7658,7 @@ i32.or i32.const 524288 i32.add - local.get $16 + local.get $5 i32.const 18 i32.shl i32.add @@ -7690,8 +7669,8 @@ local.tee $0 f64.mul f64.sub - local.get $14 - local.get $6 + local.get $15 + local.get $7 local.get $0 local.get $2 f64.sub @@ -7700,7 +7679,7 @@ f64.sub f64.mul local.tee $2 - local.get $14 + local.get $15 local.get $17 f64.add f64.mul @@ -7711,17 +7690,17 @@ i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $6 + local.tee $7 f64.mul local.tee $3 local.get $2 - local.get $6 + local.get $7 f64.mul local.get $0 - local.get $6 + local.get $7 f64.const 3 f64.sub - local.get $20 + local.get $19 f64.sub f64.sub local.get $17 @@ -7735,7 +7714,7 @@ f64.reinterpret_i64 local.tee $2 f64.mul - local.tee $20 + local.tee $19 f64.const -7.028461650952758e-09 local.get $2 f64.mul @@ -7749,18 +7728,18 @@ f64.add f64.const 1.350039202129749e-08 f64.const 0 - local.get $16 + local.get $5 select f64.add local.tee $2 f64.add f64.const 0.5849624872207642 f64.const 0 - local.get $16 + local.get $5 select local.tee $3 f64.add - local.get $7 + local.get $6 f64.convert_i32_s local.tee $0 f64.add @@ -7768,14 +7747,14 @@ i64.const -4294967296 i64.and f64.reinterpret_i64 - local.set $6 + local.set $7 local.get $2 - local.get $6 + local.get $7 local.get $0 f64.sub local.get $3 f64.sub - local.get $20 + local.get $19 f64.sub f64.sub end @@ -7788,7 +7767,7 @@ f64.reinterpret_i64 local.tee $0 f64.sub - local.get $6 + local.get $7 f64.mul local.get $1 local.get $3 @@ -7796,27 +7775,27 @@ f64.add local.tee $1 local.get $0 - local.get $6 + local.get $7 f64.mul local.tee $2 f64.add local.tee $0 i64.reinterpret_f64 - local.tee $13 + local.tee $14 i32.wrap_i64 local.set $5 block $folding-inner1 block $folding-inner0 - local.get $13 + local.get $14 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $11 + local.tee $12 i32.const 1083179008 i32.ge_s if local.get $5 - local.get $11 + local.get $12 i32.const 1083179008 i32.sub i32.or @@ -7830,14 +7809,14 @@ i32.or br_if $folding-inner0 else - local.get $11 + local.get $12 i32.const 2147483647 i32.and i32.const 1083231232 i32.ge_s i32.const 0 local.get $5 - local.get $11 + local.get $12 i32.const -1064252416 i32.sub i32.or @@ -7850,31 +7829,31 @@ select br_if $folding-inner1 end - local.get $11 + local.get $12 i32.const 2147483647 i32.and - local.tee $9 + local.tee $11 i32.const 20 i32.shr_s i32.const 1023 i32.sub local.set $5 i32.const 0 - local.set $7 + local.set $6 local.get $1 - local.get $9 + local.get $11 i32.const 1071644672 i32.gt_s if i32.const 1048575 - local.get $11 + local.get $12 i32.const 1048576 local.get $5 i32.const 1 i32.add i32.shr_s i32.add - local.tee $9 + local.tee $11 i32.const 2147483647 i32.and i32.const 20 @@ -7885,7 +7864,7 @@ i32.shr_s i32.const -1 i32.xor - local.get $9 + local.get $11 i32.and i64.extend_i32_s i64.const 32 @@ -7893,7 +7872,7 @@ f64.reinterpret_i64 local.set $0 i32.const 0 - local.get $9 + local.get $11 i32.const 1048575 i32.and i32.const 1048576 @@ -7902,14 +7881,14 @@ local.get $5 i32.sub i32.shr_s - local.tee $7 + local.tee $6 i32.sub - local.get $7 - local.get $11 + local.get $6 + local.get $12 i32.const 0 i32.lt_s select - local.set $7 + local.set $6 local.get $2 local.get $0 f64.sub @@ -7991,7 +7970,7 @@ i64.const 32 i64.shr_u i32.wrap_i64 - local.get $7 + local.get $6 i32.const 20 i32.shl i32.add @@ -8002,7 +7981,7 @@ i32.le_s if (result f64) local.get $0 - local.get $7 + local.get $6 call $~lib/math/NativeMath.scalbn else local.get $0 @@ -8054,13 +8033,13 @@ (local $2 f64) (local $3 f64) (local $4 i32) - (local $5 f64) + (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 f32) - (local $10 i32) - (local $11 i64) + (local $7 i64) + (local $8 f32) + (local $9 i32) + (local $10 i64) + (local $11 f64) local.get $1 f32.abs f32.const 2 @@ -8136,47 +8115,45 @@ local.tee $4 i32.const 2147483647 i32.and - local.set $7 + local.set $6 + local.get $1 + f32.nearest + local.get $1 + f32.eq + i32.const 0 local.get $4 i32.const 31 i32.shr_u local.tee $4 - if (result i32) - local.get $1 - f32.nearest - local.get $1 - f32.eq - else - i32.const 0 - end + select if i32.const 0 local.set $4 local.get $1 f32.const 0.5 f32.mul - local.tee $9 + local.tee $8 f32.nearest - local.get $9 + local.get $8 f32.ne i32.const 31 i32.shl - local.set $10 + local.set $9 local.get $0 f32.neg local.set $0 end local.get $1 i32.reinterpret_f32 - local.set $6 - local.get $7 + local.set $5 + local.get $6 i32.const 1065353216 i32.eq if (result i32) i32.const 2143289344 i32.const 1065353216 local.get $4 - local.get $6 + local.get $5 i32.const 2147483647 i32.and i32.const 2139095040 @@ -8184,15 +8161,15 @@ i32.or select else - local.get $7 + local.get $6 if (result i32) - local.get $7 + local.get $6 i32.const 2139095040 i32.eq if (result i32) i32.const 0 i32.const 2139095040 - local.get $6 + local.get $5 i32.const 31 i32.shr_u select @@ -8201,33 +8178,34 @@ if (result i32) i32.const 2143289344 else - local.get $0 - f64.promote_f32 - i64.reinterpret_f64 - local.tee $11 - i64.const 4604544271217802189 - i64.sub - i64.const 52 - i64.shr_s - local.set $8 - local.get $11 - local.get $8 - i64.const 52 - i64.shl - i64.sub - f64.reinterpret_i64 - local.tee $2 - f64.const 1 - f64.sub - local.get $2 - f64.const 1 - f64.add - f64.div - local.tee $3 - local.get $3 - f64.mul - local.set $2 - block $~lib/math/exp2f|inlined.0 + block $~lib/math/exp2f|inlined.0 (result f64) + local.get $0 + f64.promote_f32 + i64.reinterpret_f64 + local.tee $10 + i64.const 4604544271217802189 + i64.sub + i64.const 52 + i64.shr_s + local.set $7 + local.get $10 + local.get $7 + i64.const 52 + i64.shl + i64.sub + f64.reinterpret_i64 + local.tee $2 + f64.const 1 + f64.sub + local.get $2 + f64.const 1 + f64.add + f64.div + local.tee $3 + local.get $3 + f64.mul + local.set $2 + f64.const 0 local.get $1 f64.promote_f32 f64.const 2.8853900817779268 @@ -8253,7 +8231,7 @@ f64.mul f64.add f64.mul - local.get $8 + local.get $7 f64.convert_i64_s f64.add f64.mul @@ -8261,18 +8239,17 @@ f64.const -1022 f64.lt br_if $~lib/math/exp2f|inlined.0 + drop + f64.const inf local.get $2 f64.const 1024 f64.ge - if - f64.const inf - local.set $5 - br $~lib/math/exp2f|inlined.0 - end + br_if $~lib/math/exp2f|inlined.0 + drop local.get $2 local.get $2 f64.nearest - local.tee $5 + local.tee $11 f64.sub local.tee $2 local.get $2 @@ -8306,15 +8283,13 @@ f64.mul f64.add i64.reinterpret_f64 - local.get $5 + local.get $11 i64.trunc_f64_s i64.const 52 i64.shl i64.add f64.reinterpret_i64 - local.set $5 end - local.get $5 f32.demote_f64 i32.reinterpret_f32 end @@ -8322,13 +8297,13 @@ else i32.const 2139095040 i32.const 0 - local.get $6 + local.get $5 i32.const 31 i32.shr_u select end end - local.get $10 + local.get $9 i32.or f32.reinterpret_i32 ) @@ -8394,7 +8369,6 @@ i32.xor ) (func $~lib/math/NativeMath.seedRandom (param $0 i64) - (local $1 i32) i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -8503,8 +8477,8 @@ (local $4 i64) (local $5 i64) (local $6 i32) - (local $7 f64) - (local $8 i32) + (local $7 i32) + (local $8 f64) local.get $1 i64.reinterpret_f64 local.tee $4 @@ -8513,14 +8487,19 @@ 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 $7 i32.const 1 local.get $1 local.get $1 f64.ne i32.const 1 - local.get $0 - i64.reinterpret_f64 - local.tee $2 + local.get $2 i64.const 52 i64.shr_u i64.const 2047 @@ -8551,11 +8530,6 @@ 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) @@ -8684,6 +8658,12 @@ local.set $2 end end + i32.const 1 + i32.const 1 + local.get $6 + i32.const 1 + i32.and + i32.const 0 local.get $2 i64.const 4503599627370496 i64.sub @@ -8706,24 +8686,13 @@ local.tee $0 local.get $0 f64.add - local.set $7 - local.get $0 + local.tee $8 local.get $1 f64.abs local.tee $1 - f64.sub - local.get $0 - i32.const 1 - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 0 - local.get $7 - local.get $1 f64.eq select - local.get $7 + local.get $8 local.get $1 f64.gt select @@ -8738,12 +8707,16 @@ local.get $5 i64.eq select - select - local.set $0 + if + local.get $0 + local.get $1 + f64.sub + local.set $0 + end local.get $0 f64.neg local.get $0 - local.get $8 + local.get $7 select ) (func $std/math/test_rem (param $0 f64) (param $1 f64) (param $2 f64) (result i32) @@ -8757,20 +8730,12 @@ (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 f32) + (local $4 f32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $9 local.get $1 i32.reinterpret_f32 local.tee $6 @@ -8779,13 +8744,23 @@ i32.const 255 i32.and local.set $8 - local.get $2 - local.set $3 + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $5 i32.const 1 local.get $1 local.get $1 f32.ne - local.get $9 + local.get $3 + local.tee $2 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $9 i32.const 255 i32.eq i32.const 1 @@ -8803,7 +8778,7 @@ f32.div return end - local.get $3 + local.get $2 i32.const 1 i32.shl i32.eqz @@ -8811,22 +8786,18 @@ local.get $0 return end - local.get $3 - i32.const 31 - i32.shr_u - local.set $4 local.get $9 if (result i32) - local.get $3 + local.get $2 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $3 + local.get $2 i32.const 1 local.get $9 - local.get $3 + local.get $2 i32.const 9 i32.shl i32.clz @@ -8936,6 +8907,12 @@ local.set $9 end end + i32.const 1 + i32.const 1 + local.get $7 + i32.const 1 + i32.and + i32.const 0 local.get $2 i32.const 8388608 i32.sub @@ -8956,24 +8933,13 @@ local.tee $0 local.get $0 f32.add - local.set $5 - local.get $0 + local.tee $4 local.get $1 f32.abs local.tee $1 - f32.sub - local.get $0 - i32.const 1 - i32.const 1 - local.get $7 - i32.const 1 - i32.and - i32.const 0 - local.get $5 - local.get $1 f32.eq select - local.get $5 + local.get $4 local.get $1 f32.gt select @@ -8988,12 +8954,16 @@ local.get $9 i32.eq select - select - local.set $0 + if + local.get $0 + local.get $1 + f32.sub + local.set $0 + end local.get $0 f32.neg local.get $0 - local.get $4 + local.get $5 select ) (func $std/math/test_remf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) @@ -9204,7 +9174,7 @@ end local.set $6 global.get $~lib/math/rempio2_y0 - local.set $3 + local.set $0 global.get $~lib/math/rempio2_y1 local.set $4 local.get $6 @@ -9213,10 +9183,10 @@ if (result f64) f64.const 1 f64.const 0.5 - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.mul - local.tee $0 + local.tee $3 f64.mul local.tee $1 f64.sub @@ -9226,28 +9196,28 @@ f64.sub local.get $1 f64.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.const 0.0416666666666666 - local.get $0 + local.get $3 f64.const -0.001388888888887411 - local.get $0 + local.get $3 f64.const 2.480158728947673e-05 f64.mul f64.add f64.mul f64.add f64.mul - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.mul local.tee $1 local.get $1 f64.mul f64.const -2.7557314351390663e-07 - local.get $0 + local.get $3 f64.const 2.087572321298175e-09 - local.get $0 + local.get $3 f64.const -1.1359647557788195e-11 f64.mul f64.add @@ -9256,47 +9226,55 @@ f64.mul f64.add f64.mul - local.get $3 + local.get $0 local.get $4 f64.mul f64.sub f64.add f64.add else - local.get $3 - local.get $3 - f64.mul - local.tee $0 - local.get $3 + local.get $0 + local.get $0 f64.mul - local.set $1 - local.get $3 + local.tee $3 local.get $0 - f64.const 0.5 - local.get $4 f64.mul - local.get $1 + local.tee $1 + f64.const -0.16666666666666632 + local.get $3 f64.const 0.00833333333332249 - local.get $0 + local.get $3 f64.const -1.984126982985795e-04 - local.get $0 + local.get $3 f64.const 2.7557313707070068e-06 f64.mul f64.add f64.mul f64.add - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 + local.get $3 f64.mul f64.mul f64.const -2.5050760253406863e-08 - local.get $0 + local.get $3 f64.const 1.58969099521155e-10 f64.mul f64.add f64.mul f64.add + local.tee $7 + f64.mul + f64.add + f64.mul + drop + local.get $0 + local.get $3 + f64.const 0.5 + local.get $4 + f64.mul + local.get $1 + local.get $7 f64.mul f64.sub f64.mul @@ -9308,8 +9286,7 @@ f64.sub f64.sub end - local.set $0 - local.get $0 + local.tee $0 f64.neg local.get $0 local.get $6 @@ -9592,8 +9569,7 @@ f64.add f32.demote_f64 end - local.set $0 - local.get $0 + local.tee $0 f32.neg local.get $0 local.get $1 @@ -10178,9 +10154,9 @@ end ) (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) - (local $1 f64) + (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 f64) (local $5 f64) (local $6 i64) @@ -10192,18 +10168,18 @@ (local $12 i64) local.get $0 i32.reinterpret_f32 - local.tee $2 + local.tee $1 i32.const 31 i32.shr_u local.set $11 - local.get $2 + local.get $1 i32.const 2147483647 i32.and - local.tee $3 + local.tee $2 i32.const 1061752794 i32.le_u if - local.get $3 + local.get $2 i32.const 964689920 i32.lt_u if @@ -10218,9 +10194,9 @@ local.tee $4 local.get $5 f64.mul - local.set $1 + local.set $3 local.get $5 - local.get $1 + local.get $3 f64.const 0.3333313950307914 local.get $4 f64.const 0.13339200271297674 @@ -10228,18 +10204,18 @@ f64.add f64.mul f64.add - local.get $1 + local.get $3 local.get $4 local.get $4 f64.mul - local.tee $1 + local.tee $3 f64.mul f64.const 0.05338123784456704 local.get $4 f64.const 0.024528318116654728 f64.mul f64.add - local.get $1 + local.get $3 f64.const 0.002974357433599673 local.get $4 f64.const 0.009465647849436732 @@ -10252,7 +10228,7 @@ f32.demote_f64 return end - local.get $3 + local.get $2 i32.const 2139095040 i32.ge_u if @@ -10262,7 +10238,7 @@ return end block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $3 + local.get $2 i32.const 1305022427 i32.lt_u if @@ -10273,25 +10249,25 @@ f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $1 + local.tee $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $1 + local.get $3 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $1 + local.get $3 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.2 end - local.get $3 + local.get $2 i32.const 23 i32.shr_s i32.const 152 i32.sub - local.tee $2 + local.tee $1 i32.const 6 i32.shr_s i32.const 3 @@ -10304,7 +10280,7 @@ local.get $10 i64.load offset=8 local.set $8 - local.get $2 + local.get $1 i32.const 63 i32.and i64.extend_i32_s @@ -10336,7 +10312,7 @@ local.get $0 f64.promote_f32 f64.copysign - local.get $3 + local.get $2 i32.const 8388607 i32.and i32.const 8388608 @@ -10375,13 +10351,13 @@ i64.shr_u i64.add i32.wrap_i64 - local.tee $2 + local.tee $1 i32.sub - local.get $2 + local.get $1 local.get $11 select end - local.set $2 + local.set $1 global.get $~lib/math/rempio2f_y local.tee $5 local.get $5 @@ -10389,9 +10365,10 @@ local.tee $4 local.get $5 f64.mul - local.set $1 + local.set $3 + f64.const -1 local.get $5 - local.get $1 + local.get $3 f64.const 0.3333313950307914 local.get $4 f64.const 0.13339200271297674 @@ -10399,18 +10376,18 @@ f64.add f64.mul f64.add - local.get $1 + local.get $3 local.get $4 local.get $4 f64.mul - local.tee $1 + local.tee $3 f64.mul f64.const 0.05338123784456704 local.get $4 f64.const 0.024528318116654728 f64.mul f64.add - local.get $1 + local.get $3 f64.const 0.002974357433599673 local.get $4 f64.const 0.009465647849436732 @@ -10420,12 +10397,10 @@ f64.add f64.mul f64.add - local.set $1 - f64.const -1 - local.get $1 + local.tee $3 f64.div + local.get $3 local.get $1 - local.get $2 i32.const 1 i32.and select @@ -10639,6 +10614,7 @@ (local $7 f64) (local $8 f64) (local $9 f64) + (local $10 f64) local.get $0 i64.reinterpret_f64 local.tee $3 @@ -10688,6 +10664,7 @@ local.get $2 local.get $2 f64.mul + local.tee $1 f64.mul f64.const -2.5050760253406863e-08 local.get $2 @@ -10703,16 +10680,13 @@ global.set $~lib/math/NativeMath.sincos_sin f64.const 1 f64.const 0.5 - local.get $0 - local.get $0 - f64.mul - local.tee $2 + local.get $2 f64.mul local.tee $4 f64.sub - local.tee $1 + local.tee $7 f64.const 1 - local.get $1 + local.get $7 f64.sub local.get $4 f64.sub @@ -10728,11 +10702,8 @@ f64.mul f64.add f64.mul - local.get $2 - local.get $2 - f64.mul - local.tee $4 - local.get $4 + local.get $1 + local.get $1 f64.mul f64.const -2.7557314351390663e-07 local.get $2 @@ -10894,33 +10865,34 @@ local.tee $4 local.get $4 f64.mul - local.tee $0 + local.tee $2 local.get $4 f64.mul - local.set $2 + local.set $0 local.get $4 - local.get $0 + local.get $2 f64.const 0.5 global.get $~lib/math/rempio2_y1 - local.tee $1 + local.tee $7 f64.mul - local.get $2 - f64.const 0.00833333333332249 local.get $0 + f64.const 0.00833333333332249 + local.get $2 f64.const -1.984126982985795e-04 - local.get $0 + local.get $2 f64.const 2.7557313707070068e-06 f64.mul f64.add f64.mul f64.add - local.get $0 - local.get $0 - local.get $0 + local.get $2 + local.get $2 + local.get $2 f64.mul + local.tee $1 f64.mul f64.const -2.5050760253406863e-08 - local.get $0 + local.get $2 f64.const 1.58969099521155e-10 f64.mul f64.add @@ -10929,9 +10901,9 @@ 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 @@ -10940,18 +10912,15 @@ local.set $0 f64.const 1 f64.const 0.5 - local.get $4 - local.get $4 - f64.mul - local.tee $2 + local.get $2 f64.mul - local.tee $7 - f64.sub local.tee $9 + f64.sub + local.tee $10 f64.const 1 - local.get $9 + local.get $10 f64.sub - local.get $7 + local.get $9 f64.sub local.get $2 local.get $2 @@ -10965,11 +10934,8 @@ f64.mul f64.add f64.mul - local.get $2 - local.get $2 - f64.mul - local.tee $7 - local.get $7 + local.get $1 + local.get $1 f64.mul f64.const -2.7557314351390663e-07 local.get $2 @@ -10984,7 +10950,7 @@ f64.add f64.mul local.get $4 - local.get $1 + local.get $7 f64.mul f64.sub f64.add diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.optimized.wat index 1ab531e51f..2bc12c1b9c 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.optimized.wat @@ -21,41 +21,40 @@ (local $6 i64) (local $7 i64) (local $8 i64) - local.get $0 + local.get $1 i64.reinterpret_f64 - local.tee $2 + local.tee $3 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $4 - local.get $1 + local.set $5 + local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $2 + i64.const 63 + i64.shr_u + local.set $7 + i32.const 1 + local.get $1 + local.get $1 + f64.ne + i32.const 1 + local.get $2 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $5 + local.tee $4 + i64.const 2047 + i64.eq local.get $3 i64.const 1 i64.shl local.tee $6 i64.eqz - if (result i32) - i32.const 1 - else - local.get $4 - i64.const 2047 - i64.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f64.ne - end + select + select if local.get $0 local.get $1 @@ -65,10 +64,6 @@ f64.div return end - local.get $2 - i64.const 63 - i64.shr_u - local.set $7 block $folding-inner0 local.get $2 i64.const 1 @@ -267,40 +262,39 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 + local.get $1 i32.reinterpret_f32 - local.tee $2 + local.tee $3 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $4 - local.get $1 + local.set $5 + local.get $0 i32.reinterpret_f32 - local.tee $3 + local.tee $2 + i32.const -2147483648 + i32.and + local.set $7 + i32.const 1 + local.get $1 + local.get $1 + f32.ne + local.get $2 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $5 + local.tee $4 + i32.const 255 + i32.eq + i32.const 1 local.get $3 i32.const 1 i32.shl local.tee $6 - if (result i32) - local.get $4 - i32.const 255 - i32.eq - else - i32.const 1 - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f32.ne - end + select + select if local.get $0 local.get $1 @@ -310,10 +304,6 @@ f32.div return end - local.get $2 - i32.const -2147483648 - i32.and - local.set $7 block $folding-inner0 local.get $2 i32.const 1 diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 868a0b1ae3..49e1f223da 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1075,11 +1075,13 @@ global.set $std/operator-overloading/excl global.get $std/operator-overloading/excl local.tee $0 + local.set $1 + local.get $0 i32.load if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load offset=4 i32.eqz end diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index e96619941d..a3e5c8a21d 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -64,15 +64,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -96,23 +94,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -127,25 +125,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -157,24 +155,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -183,7 +181,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -193,7 +191,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -347,15 +345,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -603,16 +599,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -624,18 +620,19 @@ unreachable end i32.const 1456 - local.tee $0 + local.set $1 + i32.const 1456 i32.const 0 i32.store i32.const 3024 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 1456 @@ -649,10 +646,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -667,10 +664,10 @@ 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 @@ -683,7 +680,7 @@ i32.const 1456 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 @@ -720,6 +717,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -736,11 +734,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -1408,34 +1406,34 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $6 local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $5 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $7 + local.set $8 local.get $4 local.set $2 loop $while-continue|0 - local.get $6 - local.get $7 + local.get $5 + local.get $8 i32.ne if - local.get $6 + local.get $5 local.tee $3 i32.load offset=4 i32.const 1 @@ -1447,7 +1445,7 @@ i32.load8_s i32.store8 local.get $2 - local.get $5 + local.get $6 local.get $3 i32.load8_s call $~lib/util/hash/hash8 @@ -1467,59 +1465,56 @@ i32.add local.set $2 end - local.get $6 + local.get $5 i32.const 8 i32.add - local.set $6 + local.set $5 br $while-continue|0 end end - local.get $5 - local.tee $2 - local.get $0 + local.get $6 local.tee $3 + local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $3 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $3 - local.get $2 i32.store - local.get $3 + local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.set $1 local.get $4 - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 + local.get $6 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -1853,10 +1848,10 @@ local.get $6 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $4 local.get $5 i32.const 3 i32.and - local.get $4 i32.or i32.store local.get $1 @@ -2646,34 +2641,34 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $6 local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $5 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $7 + local.set $8 local.get $4 local.set $2 loop $while-continue|0 - local.get $6 - local.get $7 + local.get $5 + local.get $8 i32.ne if - local.get $6 + local.get $5 local.tee $3 i32.load offset=4 i32.const 1 @@ -2685,7 +2680,7 @@ i32.load8_u i32.store8 local.get $2 - local.get $5 + local.get $6 local.get $3 i32.load8_u call $~lib/util/hash/hash8 @@ -2705,59 +2700,56 @@ i32.add local.set $2 end - local.get $6 + local.get $5 i32.const 8 i32.add - local.set $6 + local.set $5 br $while-continue|0 end end - local.get $5 - local.tee $2 - local.get $0 + local.get $6 local.tee $3 + local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $3 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $3 - local.get $2 i32.store - local.get $3 + local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.set $1 local.get $4 - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 + local.get $6 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -3463,34 +3455,34 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $6 local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $5 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $7 + local.set $8 local.get $4 local.set $2 loop $while-continue|0 - local.get $6 - local.get $7 + local.get $5 + local.get $8 i32.ne if - local.get $6 + local.get $5 local.tee $3 i32.load offset=4 i32.const 1 @@ -3502,7 +3494,7 @@ i32.load16_s i32.store16 local.get $2 - local.get $5 + local.get $6 local.get $3 i32.load16_s call $~lib/util/hash/hash16 @@ -3522,59 +3514,56 @@ i32.add local.set $2 end - local.get $6 + local.get $5 i32.const 8 i32.add - local.set $6 + local.set $5 br $while-continue|0 end end - local.get $5 - local.tee $2 - local.get $0 + local.get $6 local.tee $3 + local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $3 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $3 - local.get $2 i32.store - local.get $3 + local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.set $1 local.get $4 - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 + local.get $6 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -4288,34 +4277,34 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $6 local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $5 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $7 + local.set $8 local.get $4 local.set $2 loop $while-continue|0 - local.get $6 - local.get $7 + local.get $5 + local.get $8 i32.ne if - local.get $6 + local.get $5 local.tee $3 i32.load offset=4 i32.const 1 @@ -4327,7 +4316,7 @@ i32.load16_u i32.store16 local.get $2 - local.get $5 + local.get $6 local.get $3 i32.load16_u call $~lib/util/hash/hash16 @@ -4347,59 +4336,56 @@ i32.add local.set $2 end - local.get $6 + local.get $5 i32.const 8 i32.add - local.set $6 + local.set $5 br $while-continue|0 end end - local.get $5 - local.tee $2 - local.get $0 + local.get $6 local.tee $3 + local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $3 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $3 - local.get $2 i32.store - local.get $3 + local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.set $1 local.get $4 - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 + local.get $6 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -5121,34 +5107,34 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $6 local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $5 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $7 + local.set $8 local.get $4 local.set $2 loop $while-continue|0 - local.get $6 - local.get $7 + local.get $5 + local.get $8 i32.ne if - local.get $6 + local.get $5 local.tee $3 i32.load offset=4 i32.const 1 @@ -5160,7 +5146,7 @@ i32.load i32.store local.get $2 - local.get $5 + local.get $6 local.get $3 i32.load call $~lib/util/hash/hash32 @@ -5180,59 +5166,56 @@ i32.add local.set $2 end - local.get $6 + local.get $5 i32.const 8 i32.add - local.set $6 + local.set $5 br $while-continue|0 end end - local.get $5 - local.tee $2 - local.get $0 + local.get $6 local.tee $3 + local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $3 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $3 - local.get $2 i32.store - local.get $3 + local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.set $1 local.get $4 - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 + local.get $6 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -6473,34 +6456,34 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $6 local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $5 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $7 + local.set $8 local.get $4 local.set $2 loop $while-continue|0 - local.get $6 - local.get $7 + local.get $5 + local.get $8 i32.ne if - local.get $6 + local.get $5 local.tee $3 i32.load offset=8 i32.const 1 @@ -6512,7 +6495,7 @@ i64.load i64.store local.get $2 - local.get $5 + local.get $6 local.get $3 i64.load call $~lib/util/hash/hash64 @@ -6532,59 +6515,56 @@ i32.add local.set $2 end - local.get $6 + local.get $5 i32.const 16 i32.add - local.set $6 + local.set $5 br $while-continue|0 end end - local.get $5 - local.tee $2 - local.get $0 + local.get $6 local.tee $3 + local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $3 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $3 - local.get $2 i32.store - local.get $3 + local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.set $1 local.get $4 - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 + local.get $6 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -7796,34 +7776,34 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $6 local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $5 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $7 + local.set $8 local.get $4 local.set $2 loop $while-continue|0 - local.get $6 - local.get $7 + local.get $5 + local.get $8 i32.ne if - local.get $6 + local.get $5 local.tee $3 i32.load offset=4 i32.const 1 @@ -7835,7 +7815,7 @@ f32.load f32.store local.get $2 - local.get $5 + local.get $6 local.get $3 f32.load i32.reinterpret_f32 @@ -7856,59 +7836,56 @@ i32.add local.set $2 end - local.get $6 + local.get $5 i32.const 8 i32.add - local.set $6 + local.set $5 br $while-continue|0 end end - local.get $5 - local.tee $2 - local.get $0 + local.get $6 local.tee $3 + local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $3 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $3 - local.get $2 i32.store - local.get $3 + local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.set $1 local.get $4 - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 + local.get $6 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -8626,34 +8603,34 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.set $6 local.get $4 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $5 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $7 + local.set $8 local.get $4 local.set $2 loop $while-continue|0 - local.get $6 - local.get $7 + local.get $5 + local.get $8 i32.ne if - local.get $6 + local.get $5 local.tee $3 i32.load offset=8 i32.const 1 @@ -8665,7 +8642,7 @@ f64.load f64.store local.get $2 - local.get $5 + local.get $6 local.get $3 f64.load i64.reinterpret_f64 @@ -8686,59 +8663,56 @@ i32.add local.set $2 end - local.get $6 + local.get $5 i32.const 16 i32.add - local.set $6 + local.set $5 br $while-continue|0 end end - local.get $5 - local.tee $2 - local.get $0 + local.get $6 local.tee $3 + local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $3 + local.get $2 call $~lib/rt/pure/__release end + local.get $0 local.get $3 - local.get $2 i32.store - local.get $3 + local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.set $1 local.get $4 - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 - local.get $8 + local.get $0 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 + local.get $6 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index 632f355aed..7f77b4bb9f 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -98,15 +98,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -130,23 +128,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -161,25 +159,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -191,24 +189,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -217,7 +215,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -227,7 +225,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -381,15 +379,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -637,16 +633,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -658,18 +654,19 @@ unreachable end i32.const 1472 - local.tee $0 + local.set $1 + i32.const 1472 i32.const 0 i32.store i32.const 3040 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 1472 @@ -683,10 +680,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -701,10 +698,10 @@ 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 @@ -717,7 +714,7 @@ i32.const 1472 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -730,6 +727,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -746,11 +744,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index badcd07fcd..b6b4a4b087 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -390,15 +390,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -422,23 +420,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -453,25 +451,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -483,24 +481,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -509,7 +507,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -519,7 +517,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -673,15 +671,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -929,16 +925,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -950,18 +946,19 @@ unreachable end i32.const 18912 - local.tee $0 + local.set $1 + i32.const 18912 i32.const 0 i32.store i32.const 20480 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 18912 @@ -975,10 +972,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -993,10 +990,10 @@ 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 @@ -1009,7 +1006,7 @@ i32.const 18912 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 @@ -1046,6 +1043,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -1062,11 +1060,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -1779,10 +1777,10 @@ local.get $6 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $4 local.get $5 i32.const 3 i32.and - local.get $4 i32.or i32.store local.get $1 @@ -1885,34 +1883,35 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/string/String#get:length - local.tee $6 + local.tee $8 i32.eqz if local.get $0 call $~lib/rt/pure/__retain return end - local.get $6 + local.get $8 i32.const 3 i32.mul i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $8 + local.set $10 i32.const 1216 call $~lib/string/String#get:length local.set $3 loop $for-loop|0 - local.get $7 - local.get $6 + local.get $9 + local.get $8 i32.lt_u if - local.get $7 + local.get $0 + local.get $9 i32.const 1 i32.shl - local.get $0 i32.add i32.load16_u local.tee $2 @@ -1920,8 +1919,8 @@ i32.shr_u if block $for-continue|0 - local.get $7 - local.get $6 + local.get $9 + local.get $8 i32.const 1 i32.sub i32.lt_u @@ -1933,23 +1932,23 @@ i32.lt_u select if - local.get $7 + local.get $0 + local.get $9 i32.const 1 i32.shl - local.get $0 i32.add i32.load16_u offset=2 - local.tee $9 + local.tee $4 i32.const 56319 i32.sub i32.const 1025 i32.lt_u if - local.get $7 + local.get $9 i32.const 1 i32.add - local.set $7 - local.get $9 + local.set $9 + local.get $4 i32.const 1023 i32.and local.get $2 @@ -1966,20 +1965,20 @@ i32.ge_u if local.get $10 + local.get $11 i32.const 1 i32.shl - local.get $8 i32.add - local.get $9 + local.get $1 + local.get $4 i32.const 16 i32.shl - local.get $1 i32.or i32.store - local.get $10 + local.get $11 i32.const 1 i32.add - local.set $10 + local.set $11 br $for-continue|0 end end @@ -1991,9 +1990,9 @@ i32.le_u if local.get $10 + local.get $11 i32.const 1 i32.shl - local.get $8 i32.add local.get $2 i32.const 26 @@ -2006,24 +2005,26 @@ i32.const 64056 i32.le_u if (result i32) - block $~lib/util/casemap/bsearch|inlined.0 (result i32) - local.get $3 - local.set $1 - i32.const 0 - local.set $5 + local.get $3 + local.set $1 + i32.const 0 + local.set $7 + block $~lib/util/casemap/bsearch|inlined.0 loop $while-continue|1 - local.get $5 + local.get $7 local.get $1 i32.le_s if local.get $1 - local.get $5 + local.get $7 i32.add i32.const 3 i32.shr_u i32.const 2 i32.shl - local.tee $9 + local.tee $6 + local.set $4 + local.get $6 i32.const 1 i32.shl i32.const 1216 @@ -2031,31 +2032,30 @@ i32.load16_u local.get $2 i32.sub - local.tee $4 + local.tee $5 + i32.eqz + br_if $~lib/util/casemap/bsearch|inlined.0 + local.get $5 + i32.const 31 + i32.shr_u if - local.get $4 - i32.const 31 - i32.shr_u - if - local.get $9 - i32.const 4 - i32.add - local.set $5 - else - local.get $9 - i32.const 4 - i32.sub - local.set $1 - end + local.get $6 + i32.const 4 + i32.add + local.set $7 else - local.get $9 - br $~lib/util/casemap/bsearch|inlined.0 + local.get $6 + i32.const 4 + i32.sub + local.set $1 end br $while-continue|1 end end i32.const -1 + local.set $4 end + local.get $4 else i32.const -1 end @@ -2068,29 +2068,29 @@ i32.shl i32.const 1216 i32.add - local.tee $1 + local.tee $4 i32.load16_u offset=6 local.set $2 local.get $10 + local.get $11 i32.const 1 i32.shl - local.get $8 i32.add - local.tee $9 - local.get $1 + local.tee $1 + local.get $4 i32.load offset=2 i32.store - local.get $9 + local.get $1 local.get $2 i32.store16 offset=4 + local.get $11 local.get $2 i32.const 0 i32.ne i32.const 1 i32.add - local.get $10 i32.add - local.set $10 + local.set $11 else local.get $2 i32.const 1 @@ -2102,50 +2102,51 @@ i32.lt_s if local.get $10 + local.get $11 i32.const 1 i32.shl - local.get $8 i32.add local.get $2 i32.store16 else local.get $10 + local.get $11 i32.const 1 i32.shl - local.get $8 i32.add local.get $2 i32.const 65536 i32.sub local.tee $2 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $2 i32.const 1023 i32.and i32.const 56320 i32.or i32.const 16 i32.shl + local.get $2 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or i32.or i32.store - local.get $10 + local.get $11 i32.const 1 i32.add - local.set $10 + local.set $11 end end end end else local.get $10 + local.get $11 i32.const 1 i32.shl - local.get $8 i32.add local.get $2 + local.get $2 i32.const 97 i32.sub i32.const 26 @@ -2156,23 +2157,22 @@ i32.shl i32.const -1 i32.xor - local.get $2 i32.and i32.store16 end - local.get $7 + local.get $9 i32.const 1 i32.add - local.set $7 - local.get $10 + local.set $9 + local.get $11 i32.const 1 i32.add - local.set $10 + local.set $11 br $for-loop|0 end end - local.get $8 local.get $10 + local.get $11 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc @@ -2366,23 +2366,24 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $0 call $~lib/string/String#get:length - local.tee $11 + local.tee $12 i32.eqz if local.get $0 call $~lib/rt/pure/__retain return end - local.get $11 + local.get $12 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $9 + local.set $10 loop $for-loop|0 local.get $4 - local.get $11 + local.get $12 i32.lt_u if local.get $0 @@ -2391,18 +2392,20 @@ i32.shl i32.add i32.load16_u - local.tee $1 + local.tee $3 + local.set $1 + local.get $3 i32.const 7 i32.shr_u if block $for-continue|0 local.get $4 - local.get $11 + local.get $12 i32.const 1 i32.sub i32.lt_u i32.const 0 - local.get $1 + local.get $3 i32.const 55295 i32.sub i32.const 1025 @@ -2415,7 +2418,7 @@ i32.shl i32.add i32.load16_u offset=2 - local.tee $6 + local.tee $7 i32.const 56319 i32.sub i32.const 1025 @@ -2425,11 +2428,11 @@ i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.const 1023 i32.and - local.get $1 - local.tee $2 + local.get $3 + local.tee $1 i32.const 1023 i32.and i32.const 10 @@ -2437,154 +2440,153 @@ i32.or i32.const 65536 i32.add - local.tee $1 + local.tee $3 i32.const 131072 i32.ge_u if - local.get $9 - local.get $8 + local.get $10 + local.get $11 i32.const 1 i32.shl i32.add - local.get $2 - local.get $6 + local.get $1 + local.get $7 i32.const 16 i32.shl i32.or i32.store - local.get $8 + local.get $11 i32.const 1 i32.add - local.set $8 + local.set $11 br $for-continue|0 end end end - local.get $1 + local.get $3 i32.const 304 i32.eq if - local.get $9 - local.get $8 + local.get $10 + local.get $11 i32.const 1 i32.shl i32.add i32.const 50790505 i32.store - local.get $8 + local.get $11 i32.const 1 i32.add - local.set $8 + local.set $11 else - local.get $1 + local.get $3 i32.const 931 i32.eq if - local.get $9 - local.get $8 + local.get $10 + local.get $11 i32.const 1 i32.shl i32.add - local.get $11 + local.get $12 i32.const 1 i32.gt_u if (result i32) block $~lib/util/string/isFinalSigma|inlined.0 (result i32) local.get $0 - local.set $6 + local.set $7 local.get $4 i32.const 0 - local.set $3 + local.set $2 i32.const 0 local.get $4 - local.tee $1 + local.tee $3 i32.const 30 i32.sub - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.gt_s select - local.set $10 + local.set $8 loop $while-continue|1 - local.get $1 - local.get $10 + local.get $3 + local.get $8 i32.gt_s if - block $~lib/util/string/codePointBefore|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const -1 - local.get $1 + local.get $3 + local.set $1 + i32.const -1 + local.set $6 + block $~lib/util/string/codePointBefore|inlined.0 + local.get $3 i32.const 0 i32.le_s br_if $~lib/util/string/codePointBefore|inlined.0 - drop - local.get $6 - local.get $2 + local.get $7 + local.get $1 i32.const 1 i32.sub i32.const 1 i32.shl i32.add i32.load16_u - local.tee $7 + local.tee $9 i32.const 64512 i32.and i32.const 56320 i32.eq - local.get $2 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.ge_s i32.and if - local.get $6 - local.get $2 + local.get $9 + i32.const 1023 + i32.and + local.get $7 + local.get $1 i32.const 2 i32.sub i32.const 1 i32.shl i32.add i32.load16_u - local.tee $2 + local.tee $1 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + i32.const 65536 + i32.add + local.set $6 + local.get $1 i32.const 64512 i32.and i32.const 55296 i32.eq - if - local.get $7 - i32.const 1023 - i32.and - local.get $2 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - i32.const 65536 - i32.add - br $~lib/util/string/codePointBefore|inlined.0 - end + br_if $~lib/util/string/codePointBefore|inlined.0 end i32.const 65533 - local.get $7 - local.get $7 + local.get $9 + local.get $9 i32.const 63488 i32.and i32.const 55296 i32.eq select + local.set $6 end - local.tee $2 - local.set $7 - local.get $2 + local.get $6 + local.tee $1 i32.const 918000 i32.lt_u if (result i32) i32.const 6658 - local.get $7 + local.get $1 call $~lib/util/string/stagedBinaryLookup else i32.const 0 @@ -2592,12 +2594,12 @@ i32.eqz if i32.const 0 - local.get $2 + local.get $1 i32.const 127370 i32.lt_u if (result i32) i32.const 9666 - local.get $2 + local.get $1 call $~lib/util/string/stagedBinaryLookup else i32.const 0 @@ -2606,103 +2608,102 @@ br_if $~lib/util/string/isFinalSigma|inlined.0 drop i32.const 1 - local.set $3 + local.set $2 end + local.get $3 local.get $1 - local.get $2 i32.const 65536 i32.ge_s i32.const 1 i32.add i32.sub - local.set $1 + local.set $3 br $while-continue|1 end end i32.const 0 - local.get $3 + local.get $2 i32.eqz br_if $~lib/util/string/isFinalSigma|inlined.0 drop i32.const 1 i32.add - local.tee $1 + local.tee $3 i32.const 30 i32.add - local.tee $2 - local.get $11 - local.get $2 - local.get $11 + local.tee $1 + local.get $12 + local.get $1 + local.get $12 i32.lt_s select local.set $5 loop $while-continue|2 - local.get $1 + local.get $3 local.get $5 i32.lt_s if - local.get $6 - local.get $1 + local.get $7 + local.get $3 i32.const 1 i32.shl i32.add i32.load16_u - local.tee $2 + local.tee $1 i32.const 64512 i32.and i32.const 55296 i32.eq - local.get $11 - local.get $1 + local.get $12 + local.get $3 i32.const 1 i32.add i32.ne i32.and if (result i32) - local.get $6 - local.get $1 + local.get $7 + local.get $3 i32.const 1 i32.shl i32.add i32.load16_u offset=2 - local.tee $7 + local.tee $6 i32.const 64512 i32.and i32.const 56320 i32.eq if (result i32) - local.get $2 + local.get $1 i32.const 10 i32.shl - local.get $7 + local.get $6 i32.add i32.const -56613888 i32.add else - local.get $2 + local.get $1 end else - local.get $2 + local.get $1 end - local.tee $7 + local.tee $6 i32.const 918000 i32.lt_u if (result i32) i32.const 6658 - local.get $7 + local.get $6 call $~lib/util/string/stagedBinaryLookup else i32.const 0 end i32.eqz if - local.get $7 - local.tee $1 + local.get $6 i32.const 127370 i32.lt_u if (result i32) i32.const 9666 - local.get $1 + local.get $6 call $~lib/util/string/stagedBinaryLookup else i32.const 0 @@ -2710,14 +2711,14 @@ i32.eqz br $~lib/util/string/isFinalSigma|inlined.0 end - local.get $1 - local.get $7 + local.get $3 + local.get $6 i32.const 65536 i32.ge_u i32.const 1 i32.add i32.add - local.set $1 + local.set $3 br $while-continue|2 end end @@ -2733,53 +2734,53 @@ end i32.store16 else - local.get $1 + local.get $3 i32.const 9398 i32.sub i32.const 25 i32.le_u if - local.get $9 - local.get $8 + local.get $10 + local.get $11 i32.const 1 i32.shl i32.add - local.get $1 + local.get $3 i32.const 26 i32.add i32.store16 else - local.get $1 + local.get $3 i32.const 0 call $~lib/util/casemap/casemap i32.const 2097151 i32.and - local.tee $1 + local.tee $3 i32.const 65536 i32.lt_s if - local.get $9 - local.get $8 + local.get $10 + local.get $11 i32.const 1 i32.shl i32.add - local.get $1 + local.get $3 i32.store16 else - local.get $9 - local.get $8 + local.get $10 + local.get $11 i32.const 1 i32.shl i32.add - local.get $1 + local.get $3 i32.const 65536 i32.sub - local.tee $1 + local.tee $3 i32.const 10 i32.shr_u i32.const 55296 i32.or - local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 56320 @@ -2788,18 +2789,18 @@ i32.shl i32.or i32.store - local.get $8 + local.get $11 i32.const 1 i32.add - local.set $8 + local.set $11 end end end end end else - local.get $9 - local.get $8 + local.get $10 + local.get $11 i32.const 1 i32.shl i32.add @@ -2820,15 +2821,15 @@ i32.const 1 i32.add local.set $4 - local.get $8 + local.get $11 i32.const 1 i32.add - local.set $8 + local.set $11 br $for-loop|0 end end - local.get $9 - local.get $8 + local.get $10 + local.get $11 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc @@ -2886,16 +2887,21 @@ ) (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) local.get $1 local.get $0 call $~lib/string/String#get:length - local.tee $3 + local.tee $2 i32.ge_u if i32.const -1 return end + i32.const 1 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.eq local.get $0 local.get $1 i32.const 1 @@ -2907,15 +2913,7 @@ i32.and i32.const 55296 i32.ne - if (result i32) - i32.const 1 - else - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.eq - end + select if local.get $2 return diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 4e7584b42c..47d0c5f5b2 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -131,15 +131,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -163,23 +161,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -194,25 +192,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -224,24 +222,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -250,7 +248,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -260,7 +258,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -414,15 +412,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -670,16 +666,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -691,18 +687,19 @@ unreachable end i32.const 22064 - local.tee $0 + local.set $1 + i32.const 22064 i32.const 0 i32.store i32.const 23632 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 22064 @@ -716,10 +713,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -734,10 +731,10 @@ 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 @@ -750,7 +747,7 @@ i32.const 22064 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 @@ -787,6 +784,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -803,11 +801,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -2466,10 +2464,10 @@ local.get $6 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $4 local.get $5 i32.const 3 i32.and - local.get $4 i32.or i32.store local.get $1 diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 43f485e7e6..16f5f05b5c 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -718,15 +718,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -750,23 +748,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -781,25 +779,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -811,24 +809,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -837,7 +835,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -847,7 +845,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -1001,15 +999,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -1257,16 +1253,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -1278,18 +1274,19 @@ unreachable end i32.const 22000 - local.tee $0 + local.set $1 + i32.const 22000 i32.const 0 i32.store i32.const 23568 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 22000 @@ -1303,10 +1300,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -1321,10 +1318,10 @@ 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 @@ -1337,7 +1334,7 @@ i32.const 22000 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 @@ -1374,6 +1371,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -1390,11 +1388,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -2088,23 +2086,20 @@ i32.const 1 i32.shl local.set $5 + i32.const 1 local.get $2 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $3 + local.tee $4 + i32.eqz local.get $1 i32.const 1 i32.shl - local.tee $4 + local.tee $3 local.get $5 i32.lt_u - if (result i32) - i32.const 1 - else - local.get $3 - i32.eqz - end + select if local.get $0 call $~lib/rt/pure/__retain @@ -2112,46 +2107,46 @@ call $~lib/rt/pure/__release return end - local.get $4 + local.get $3 i32.const 1 call $~lib/rt/tlsf/__alloc local.set $1 - local.get $4 + local.get $3 local.get $5 i32.sub - local.tee $4 - local.get $3 + local.tee $3 + local.get $4 i32.gt_u if local.get $1 local.get $2 - local.get $3 local.get $4 + local.get $3 i32.const 2 i32.sub - local.get $3 + local.get $4 i32.div_u local.tee $6 call $~lib/memory/memory.repeat local.get $1 - local.get $3 + local.get $4 local.get $6 i32.mul - local.tee $3 + local.tee $4 i32.add local.get $2 - local.get $4 local.get $3 + local.get $4 i32.sub call $~lib/memory/memory.copy else local.get $1 local.get $2 - local.get $4 + local.get $3 call $~lib/memory/memory.copy end local.get $1 - local.get $4 + local.get $3 i32.add local.get $0 local.get $5 @@ -2173,23 +2168,20 @@ i32.const 1 i32.shl local.set $3 + i32.const 1 local.get $2 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.tee $4 + i32.eqz local.get $1 i32.const 1 i32.shl local.tee $5 local.get $3 i32.lt_u - if (result i32) - i32.const 1 - else - local.get $4 - i32.eqz - end + select if local.get $0 call $~lib/rt/pure/__retain @@ -2393,38 +2385,34 @@ i32.const 1 return end - block $break|0 - local.get $0 - i32.const 5760 - i32.eq - local.get $0 - i32.const 8232 - i32.eq - i32.or - local.get $0 - i32.const 8233 - i32.eq - local.get $0 - i32.const 8239 - i32.eq - i32.or - i32.or - local.get $0 - i32.const 8287 - i32.eq - local.get $0 - i32.const 12288 - i32.eq - i32.or - local.get $0 - i32.const 65279 - i32.eq - i32.or - i32.or - i32.eqz - if - br $break|0 - end + local.get $0 + i32.const 5760 + i32.eq + local.get $0 + i32.const 8232 + i32.eq + i32.or + local.get $0 + i32.const 8233 + i32.eq + local.get $0 + i32.const 8239 + i32.eq + i32.or + i32.or + local.get $0 + i32.const 8287 + i32.eq + local.get $0 + i32.const 12288 + i32.eq + i32.or + local.get $0 + i32.const 65279 + i32.eq + i32.or + i32.or + if i32.const 1 return end @@ -3449,35 +3437,33 @@ (local $4 i32) (local $5 i32) (local $6 i64) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 i64) - (local $11 f64) + (local $7 f64) + (local $8 i64) + (local $9 i32) + (local $10 f64) + (local $11 i64) (local $12 i64) - (local $13 i64) - (local $14 i32) + (local $13 i32) + (local $14 i64) (local $15 i32) - (local $16 i64) - (local $17 i32) block $folding-inner0 local.get $0 call $~lib/rt/pure/__retain local.tee $3 call $~lib/string/String#get:length - local.tee $17 + local.tee $15 i32.eqz br_if $folding-inner0 local.get $3 local.tee $0 i32.load16_u - local.set $15 + local.set $13 f64.const 1 - local.set $9 + local.set $7 loop $while-continue|0 - local.get $17 + local.get $15 if (result i32) - local.get $15 + local.get $13 call $~lib/util/string/isSpace else i32.const 0 @@ -3488,43 +3474,43 @@ i32.add local.tee $0 i32.load16_u - local.set $15 - local.get $17 + local.set $13 + local.get $15 i32.const 1 i32.sub - local.set $17 + local.set $15 br $while-continue|0 end end - local.get $17 + local.get $15 i32.eqz br_if $folding-inner0 - local.get $15 + local.get $13 i32.const 45 i32.eq if (result i32) - local.get $17 + local.get $15 i32.const 1 i32.sub - local.tee $17 + local.tee $15 i32.eqz br_if $folding-inner0 f64.const -1 - local.set $9 + local.set $7 local.get $0 i32.const 2 i32.add local.tee $0 i32.load16_u else - local.get $15 + local.get $13 i32.const 43 i32.eq if (result i32) - local.get $17 + local.get $15 i32.const 1 i32.sub - local.tee $17 + local.tee $15 i32.eqz br_if $folding-inner0 local.get $0 @@ -3533,14 +3519,14 @@ local.tee $0 i32.load16_u else - local.get $15 + local.get $13 end end - local.tee $15 + local.tee $13 i32.const 73 i32.eq i32.const 0 - local.get $17 + local.get $15 i32.const 8 i32.ge_s select @@ -3561,27 +3547,27 @@ local.get $3 call $~lib/rt/pure/__release f64.const inf - local.get $9 + local.get $7 f64.mul return end br $folding-inner0 end - local.get $15 + local.get $13 i32.const 48 i32.sub i32.const 10 i32.ge_u i32.const 0 - local.get $15 + local.get $13 i32.const 46 i32.ne select br_if $folding-inner0 local.get $0 - local.set $4 + local.set $5 loop $while-continue|1 - local.get $15 + local.get $13 i32.const 48 i32.eq if @@ -3590,15 +3576,15 @@ i32.add local.tee $0 i32.load16_u - local.set $15 - local.get $17 + local.set $13 + local.get $15 i32.const 1 i32.sub - local.set $17 + local.set $15 br $while-continue|1 end end - local.get $17 + local.get $15 i32.const 0 i32.le_s if @@ -3607,42 +3593,40 @@ f64.const 0 return end - local.get $15 + local.get $13 i32.const 46 i32.eq if - local.get $4 + local.get $5 local.get $0 i32.sub i32.eqz - local.set $4 + local.set $5 local.get $0 i32.const 2 i32.add local.set $0 - local.get $17 + i32.const 0 + local.get $5 + local.get $15 i32.const 1 i32.sub - local.tee $17 - if (result i32) - i32.const 0 - else - local.get $4 - end + local.tee $15 + select br_if $folding-inner0 i32.const 1 - local.set $8 + local.set $9 loop $for-loop|2 local.get $0 i32.load16_u - local.tee $15 + local.tee $13 i32.const 48 i32.eq if - local.get $17 + local.get $15 i32.const 1 i32.sub - local.set $17 + local.set $15 local.get $1 i32.const 1 i32.sub @@ -3654,7 +3638,7 @@ br $for-loop|2 end end - local.get $17 + local.get $15 i32.const 0 i32.le_s if @@ -3663,50 +3647,50 @@ f64.const 0 return end - local.get $15 + local.get $13 i32.const 48 i32.sub i32.const 10 i32.ge_u i32.const 0 i32.const 0 - local.get $4 + local.get $5 local.get $1 select select br_if $folding-inner0 end - local.get $15 + local.get $13 i32.const 48 i32.sub - local.set $14 + local.set $5 loop $for-loop|3 i32.const 1 - local.get $8 + local.get $9 i32.eqz i32.const 0 - local.get $15 + local.get $13 i32.const 46 i32.eq select - local.get $14 + local.get $5 i32.const 10 i32.lt_u select if block $for-break3 - local.get $14 + local.get $5 i32.const 10 i32.lt_u if - local.get $14 + local.get $5 i64.extend_i32_u - local.get $16 + local.get $14 i64.const 10 i64.mul i64.add - local.get $16 local.get $14 + local.get $5 i32.eqz i32.eqz i64.extend_i32_u @@ -3715,7 +3699,7 @@ i32.const 19 i32.lt_s select - local.set $16 + local.set $14 local.get $2 i32.const 1 i32.add @@ -3724,12 +3708,12 @@ local.get $2 local.set $1 i32.const 1 - local.set $8 + local.set $9 end - local.get $17 + local.get $15 i32.const 1 i32.sub - local.tee $17 + local.tee $15 i32.eqz br_if $for-break3 local.get $0 @@ -3737,174 +3721,179 @@ i32.add local.tee $0 i32.load16_u - local.tee $15 + local.tee $13 i32.const 48 i32.sub - local.set $14 + local.set $5 br $for-loop|3 end end end - local.get $1 - local.get $2 - local.get $8 - select - i32.const 19 - local.get $2 - i32.const 19 - local.get $2 - i32.lt_s - select - i32.sub - local.set $4 - i32.const 1 - local.set $2 - block $~lib/util/string/parseExp|inlined.0 - local.get $0 - local.tee $1 - i32.load16_u - i32.const 32 - i32.or - i32.const 101 - i32.ne - br_if $~lib/util/string/parseExp|inlined.0 + block $~lib/util/string/scientific|inlined.0 (result f64) local.get $1 - i32.const 2 - i32.add - local.tee $14 - i32.load16_u - local.tee $0 - i32.const 45 - i32.eq - if (result i32) - local.get $17 + local.get $2 + local.get $9 + select + i32.const 19 + local.get $2 + i32.const 19 + local.get $2 + i32.lt_s + select + i32.sub + local.set $9 + f64.const 0 + i32.const 1 + block $~lib/util/string/parseExp|inlined.0 (result i32) i32.const 1 - i32.sub - local.tee $17 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - i32.const -1 local.set $2 - local.get $14 + i32.const 0 + local.get $0 + local.tee $1 + i32.load16_u + i32.const 32 + i32.or + i32.const 101 + i32.ne + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $1 i32.const 2 i32.add - local.tee $14 + local.tee $5 i32.load16_u - else - local.get $0 - i32.const 43 + local.tee $0 + i32.const 45 i32.eq if (result i32) - local.get $17 + i32.const 0 + local.get $15 i32.const 1 i32.sub - local.tee $17 + local.tee $15 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 - local.get $14 + drop + i32.const -1 + local.set $2 + local.get $5 i32.const 2 i32.add - local.tee $14 + local.tee $5 i32.load16_u else local.get $0 + i32.const 43 + i32.eq + if (result i32) + i32.const 0 + local.get $15 + i32.const 1 + i32.sub + local.tee $15 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $5 + i32.const 2 + i32.add + local.tee $5 + i32.load16_u + else + local.get $0 + end end - end - local.set $0 - loop $while-continue|4 - local.get $0 - i32.const 48 - i32.eq - if - local.get $17 - i32.const 1 - i32.sub - local.tee $17 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - local.get $14 - i32.const 2 - i32.add - local.tee $14 - i32.load16_u - local.set $0 - br $while-continue|4 + local.set $0 + loop $while-continue|4 + local.get $0 + i32.const 48 + i32.eq + if + i32.const 0 + local.get $15 + i32.const 1 + i32.sub + local.tee $15 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $5 + i32.const 2 + i32.add + local.tee $5 + i32.load16_u + local.set $0 + br $while-continue|4 + end end - end - local.get $0 - i32.const 48 - i32.sub - local.set $0 - loop $for-loop|5 local.get $0 - i32.const 10 - i32.lt_u - i32.const 0 - local.get $17 - select - if - local.get $5 - i32.const 3200 - i32.ge_s + i32.const 48 + i32.sub + local.set $0 + loop $for-loop|5 + local.get $0 + i32.const 10 + i32.lt_u + i32.const 0 + local.get $15 + select if local.get $2 i32.const 3200 i32.mul - local.set $7 - br $~lib/util/string/parseExp|inlined.0 + local.get $4 + i32.const 3200 + i32.ge_s + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + local.get $4 + i32.const 10 + i32.mul + i32.add + local.set $4 + local.get $15 + i32.const 1 + i32.sub + local.set $15 + local.get $5 + i32.const 2 + i32.add + local.tee $5 + i32.load16_u + i32.const 48 + i32.sub + local.set $0 + br $for-loop|5 end - local.get $0 - local.get $5 - i32.const 10 - i32.mul - i32.add - local.set $5 - local.get $17 - i32.const 1 - i32.sub - local.set $17 - local.get $14 - i32.const 2 - i32.add - local.tee $14 - i32.load16_u - i32.const 48 - i32.sub - local.set $0 - br $for-loop|5 end + local.get $2 + local.get $4 + i32.mul end - local.get $2 - local.get $5 - i32.mul - local.set $7 - end - block $~lib/util/string/scientific|inlined.0 - i32.const 1 - local.get $4 - local.get $7 + local.get $9 i32.add local.tee $0 i32.const -342 i32.lt_s - local.get $16 + local.get $14 i64.eqz select br_if $~lib/util/string/scientific|inlined.0 + drop + f64.const inf local.get $0 i32.const 308 i32.gt_s - if - f64.const inf - local.set $11 - br $~lib/util/string/scientific|inlined.0 - end - local.get $16 + br_if $~lib/util/string/scientific|inlined.0 + drop + local.get $14 f64.convert_i64_u - local.set $11 + local.tee $10 local.get $0 i32.eqz br_if $~lib/util/string/scientific|inlined.0 + drop local.get $0 i32.const 37 i32.le_s @@ -3914,7 +3903,7 @@ i32.gt_s select if - local.get $11 + local.get $10 local.get $0 i32.const 3 i32.shl @@ -3922,11 +3911,11 @@ i32.add f64.load f64.mul - local.set $11 + local.set $10 i32.const 22 local.set $0 end - local.get $16 + local.get $14 i64.const 9007199254740991 i64.le_u if (result i32) @@ -3948,7 +3937,7 @@ i32.const 0 i32.gt_s if - local.get $11 + local.get $10 local.get $0 i32.const 3 i32.shl @@ -3956,10 +3945,9 @@ i32.add f64.load f64.mul - local.set $11 br $~lib/util/string/scientific|inlined.0 end - local.get $11 + local.get $10 i32.const 0 local.get $0 i32.sub @@ -3974,33 +3962,33 @@ i32.const 0 i32.lt_s if (result f64) - local.get $16 - local.get $16 + local.get $14 + local.get $14 i64.clz - local.tee $13 + local.tee $12 i64.shl - local.set $16 + local.set $14 local.get $0 local.tee $2 i64.extend_i32_s - local.get $13 + local.get $12 i64.sub - local.set $13 + local.set $12 loop $for-loop|6 local.get $2 i32.const -14 i32.le_s if f64.const 0.00004294967296 - local.get $16 + local.get $14 i64.const 6103515625 i64.rem_u - local.get $16 + local.get $14 i64.const 6103515625 i64.div_u - local.tee $10 + local.tee $8 i64.clz - local.tee $12 + local.tee $11 i64.const 18 i64.sub i64.shl @@ -4008,15 +3996,15 @@ f64.mul f64.nearest i64.trunc_f64_u - local.get $10 - local.get $12 + local.get $8 + local.get $11 i64.shl i64.add - local.set $16 - local.get $13 + local.set $14 local.get $12 + local.get $11 i64.sub - local.set $13 + local.set $12 local.get $2 i32.const 14 i32.add @@ -4024,75 +4012,75 @@ br $for-loop|6 end end - local.get $16 + local.get $14 i32.const 0 local.get $2 i32.sub call $~lib/math/ipow32 i64.extend_i32_s - local.tee $10 + local.tee $8 i64.div_u local.tee $6 i64.clz - local.set $12 - local.get $16 - local.get $10 + local.set $11 + local.get $14 + local.get $8 i64.rem_u f64.convert_i64_u i64.reinterpret_f64 - local.get $12 + local.get $11 i64.const 52 i64.shl i64.add f64.reinterpret_i64 - local.get $10 + local.get $8 f64.convert_i64_u f64.div i64.trunc_f64_u local.get $6 - local.get $12 + local.get $11 i64.shl i64.add f64.convert_i64_u - local.get $13 local.get $12 + local.get $11 i64.sub i32.wrap_i64 call $~lib/math/NativeMath.scalbn else - local.get $16 - local.get $16 + local.get $14 + local.get $14 i64.ctz - local.tee $13 + local.tee $12 i64.shr_u - local.set $16 - local.get $13 + local.set $14 + local.get $12 local.get $0 - local.tee $5 + local.tee $4 i64.extend_i32_s i64.add global.set $~lib/util/string/__fixmulShift loop $for-loop|7 - local.get $5 + local.get $4 i32.const 13 i32.ge_s if i64.const 32 - local.get $16 + local.get $14 i64.const 32 i64.shr_u i64.const 1220703125 i64.mul - local.get $16 + local.get $14 i64.const 4294967295 i64.and i64.const 1220703125 i64.mul - local.tee $16 + local.tee $14 i64.const 32 i64.shr_u i64.add - local.tee $13 + local.tee $12 i64.const 32 i64.shr_u i32.wrap_i64 @@ -4100,11 +4088,11 @@ local.tee $0 i64.extend_i32_u i64.sub - local.tee $12 + local.tee $11 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift - local.get $16 + local.get $14 local.get $0 i64.extend_i32_u i64.shl @@ -4112,46 +4100,46 @@ i64.shr_u i64.const 1 i64.and - local.get $13 + local.get $12 local.get $0 i64.extend_i32_u i64.shl - local.get $16 + local.get $14 i64.const 4294967295 i64.and - local.get $12 + local.get $11 i64.shr_u i64.or i64.add - local.set $16 - local.get $5 + local.set $14 + local.get $4 i32.const 13 i32.sub - local.set $5 + local.set $4 br $for-loop|7 end end - local.get $5 + local.get $4 call $~lib/math/ipow32 local.tee $0 i64.extend_i32_u - local.get $16 + local.get $14 i64.const 4294967295 i64.and i64.mul - local.set $13 + local.set $12 i64.const 32 local.get $0 i64.extend_i32_u - local.get $16 + local.get $14 i64.const 32 i64.shr_u i64.mul - local.get $13 + local.get $12 i64.const 32 i64.shr_u i64.add - local.tee $16 + local.tee $14 i64.const 32 i64.shr_u i32.wrap_i64 @@ -4159,11 +4147,11 @@ local.tee $0 i64.extend_i32_u i64.sub - local.tee $12 + local.tee $11 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift - local.get $13 + local.get $12 local.get $0 i64.extend_i32_u i64.shl @@ -4171,14 +4159,14 @@ i64.shr_u i64.const 1 i64.and - local.get $16 + local.get $14 local.get $0 i64.extend_i32_u i64.shl - local.get $13 + local.get $12 i64.const 4294967295 i64.and - local.get $12 + local.get $11 i64.shr_u i64.or i64.add @@ -4188,12 +4176,10 @@ call $~lib/math/NativeMath.scalbn end end - local.set $11 end local.get $3 call $~lib/rt/pure/__release - local.get $11 - local.get $9 + local.get $7 f64.copysign return end @@ -4301,26 +4287,23 @@ (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 block $folding-inner0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 + i32.const 1 local.get $1 call $~lib/rt/pure/__retain local.tee $1 + i32.eqz + i32.const 1 + local.get $0 + i32.eqz + local.get $0 + local.get $1 i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.eqz - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end + select + select br_if $folding-inner0 local.get $0 call $~lib/string/String#get:length @@ -4366,26 +4349,23 @@ (func $~lib/string/String.__lt (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 block $folding-inner0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 + i32.const 1 local.get $1 call $~lib/rt/pure/__retain local.tee $1 + i32.eqz + i32.const 1 + local.get $0 + i32.eqz + local.get $0 + local.get $1 i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.eqz - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end + select + select br_if $folding-inner0 local.get $1 call $~lib/string/String#get:length @@ -4744,10 +4724,10 @@ local.get $6 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $4 local.get $5 i32.const 3 i32.and - local.get $4 i32.or i32.store local.get $1 @@ -5674,17 +5654,17 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $2 + local.get $0 local.get $3 i32.const 1 i32.shl - local.get $0 i32.add i32.load16_u i32.store16 + local.get $6 local.get $3 i32.const 2 i32.shl - local.get $6 i32.add local.get $2 i32.store @@ -5730,10 +5710,10 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $9 + local.get $0 local.get $5 i32.const 1 i32.shl - local.get $0 i32.add local.get $7 call $~lib/memory/memory.copy @@ -5745,11 +5725,11 @@ i32.const 1280 call $~lib/array/Array<~lib/string/String>#push end + local.get $2 local.get $10 i32.const 1 i32.add local.tee $10 - local.get $2 i32.eq if local.get $1 @@ -5789,10 +5769,10 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $4 + local.get $0 local.get $5 i32.const 1 i32.shl - local.get $0 i32.add local.get $2 call $~lib/memory/memory.copy @@ -6578,6 +6558,7 @@ i32.const 16 i32.eq if + local.get $2 i32.const 63 local.get $0 i64.clz @@ -6587,7 +6568,6 @@ i32.shr_s i32.const 1 i32.add - local.get $2 i32.add local.tee $1 i32.const 1 @@ -6626,41 +6606,41 @@ call $~lib/rt/pure/__retain ) (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) - (local $7 i32) + (local $7 i64) (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) (local $12 i64) (local $13 i64) local.get $3 local.get $1 i64.sub - local.set $9 + local.set $8 local.get $3 i64.const 1 i32.const 0 local.get $4 i32.sub - local.tee $10 + local.tee $11 i64.extend_i32_s i64.shl - local.tee $11 + local.tee $10 i64.const 1 i64.sub local.tee $12 i64.and - local.set $8 + local.set $7 local.get $3 - local.get $10 + local.get $11 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $4 + local.set $9 loop $while-continue|0 - local.get $4 + local.get $9 i32.const 0 i32.gt_s if @@ -6675,116 +6655,112 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 - local.tee $2 - i32.const 10 - i32.ne - if - local.get $2 + block $case0|1 + 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 $case10|1 + 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 $7 + local.get $2 i32.const 1000000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 - local.set $2 + local.get $2 + local.set $4 i32.const 0 - local.set $7 + local.set $2 br $break|1 end i32.const 0 - local.set $2 + local.set $4 end - local.get $2 + local.get $4 local.get $6 i32.or if @@ -6793,7 +6769,7 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $4 i32.const 65535 i32.and i32.const 48 @@ -6804,14 +6780,14 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 - local.get $8 + local.set $9 local.get $7 + local.get $2 i64.extend_i32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl i64.add @@ -6819,20 +6795,20 @@ local.get $5 i64.le_u if - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $4 + local.get $9 i32.const 2 i32.shl i32.const 20280 i32.add i64.load32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl - local.set $3 + local.set $10 local.get $0 local.get $6 i32.const 1 @@ -6840,52 +6816,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|3 i32.const 1 - local.get $9 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $3 + local.get $10 i64.add - local.get $9 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 local.get $3 - i64.add - local.get $9 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $3 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $9 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $3 + local.get $10 i64.add local.set $1 br $while-continue|3 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 return @@ -6893,7 +6868,7 @@ br $while-continue|0 end end - local.get $10 + local.get $11 i64.extend_i32_s local.set $13 loop $while-continue|4 (result i32) @@ -6901,7 +6876,7 @@ i64.const 10 i64.mul local.set $5 - local.get $8 + local.get $7 i64.const 10 i64.mul local.tee $3 @@ -6931,26 +6906,26 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 + local.set $9 local.get $3 local.get $12 i64.and - local.tee $8 + local.tee $7 local.get $5 i64.ge_u br_if $while-continue|4 - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 local.set $1 - local.get $9 + local.get $8 i32.const 0 - local.get $4 + local.get $9 i32.sub i32.const 2 i32.shl @@ -6958,7 +6933,7 @@ i32.add i64.load32_u i64.mul - local.set $3 + local.set $8 local.get $0 local.get $6 i32.const 1 @@ -6966,52 +6941,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|6 i32.const 1 - local.get $3 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $11 + local.get $10 i64.add - local.get $3 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 - local.get $11 - i64.add local.get $3 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $11 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $3 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $11 + local.get $10 i64.add local.set $1 br $while-continue|6 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 end @@ -7034,18 +7008,16 @@ return end local.get $1 - local.get $1 local.get $2 i32.add local.tee $3 + i32.const 21 i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end + i32.const 0 + local.get $1 + local.get $3 + i32.le_s + select if (result i32) loop $for-loop|0 local.get $1 @@ -7266,15 +7238,15 @@ (local $3 i64) (local $4 i32) (local $5 i64) - (local $6 i32) + (local $6 i64) (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) local.get $1 f64.const 0 f64.lt - local.tee $8 + local.tee $9 if (result f64) local.get $0 i32.const 45 @@ -7285,60 +7257,60 @@ local.get $1 end i64.reinterpret_f64 - local.tee $3 + local.tee $2 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $3 + local.get $2 i64.const 4503599627370495 i64.and i64.add - local.tee $2 + local.tee $3 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i64.clz i32.wrap_i64 local.tee $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $6 + local.get $8 i32.const 1 - local.get $6 + local.get $8 select i32.const 1075 i32.sub - local.tee $6 + local.tee $8 i32.const 1 i32.sub local.get $4 i32.sub local.set $4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $9 + local.tee $10 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $6 - local.get $9 + local.get $8 + local.get $10 i32.sub local.get $4 i32.sub @@ -7371,10 +7343,10 @@ local.tee $4 i32.const 3 i32.shl - local.tee $9 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $9 + local.get $10 i32.const 19408 i32.add i64.load @@ -7387,52 +7359,40 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $6 i64.const 4294967295 i64.and - local.set $5 - local.get $0 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $2 + local.set $2 + local.get $6 i64.const 32 i64.shr_u - local.tee $7 - local.get $3 + local.tee $6 + global.get $~lib/util/number/_frc_plus + local.tee $5 i64.const 32 i64.shr_u - local.tee $10 + local.tee $7 i64.mul - local.get $5 + local.get $2 local.get $7 i64.mul local.get $2 + local.get $5 i64.const 4294967295 i64.and - local.tee $2 - local.get $5 + local.tee $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $10 - i64.mul local.get $5 + local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and i64.add @@ -7441,47 +7401,48 @@ i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $6 + i64.const 1 + i64.sub + local.set $5 local.get $0 - i32.sub + local.get $9 + i32.const 1 + i32.shl i32.add - i32.const -64 - i32.sub - global.get $~lib/util/number/_frc_plus - local.tee $2 - i64.const 32 - i64.shr_u - local.tee $5 + 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.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $10 - local.get $5 + local.get $2 + local.get $7 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and - local.tee $2 - local.get $10 + local.tee $3 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $7 + local.get $3 + local.get $6 i64.mul - local.get $5 + local.get $7 i64.const 4294967295 i64.and i64.add @@ -7490,36 +7451,36 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $2 + global.get $~lib/util/number/_exp_pow + local.tee $4 + local.get $8 + local.get $0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $5 local.get $4 global.get $~lib/util/number/_exp i32.add i32.const -64 i32.sub - local.get $2 + local.get $5 + local.get $6 global.get $~lib/util/number/_frc_minus - local.tee $2 + local.tee $3 i64.const 32 i64.shr_u local.tee $5 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 + local.get $2 local.get $5 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and local.tee $2 - local.get $3 i64.mul i64.const 32 i64.shr_u @@ -7529,7 +7490,7 @@ i64.shr_u i64.add local.get $2 - local.get $7 + local.get $6 i64.mul local.get $3 i64.const 4294967295 @@ -7543,13 +7504,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $9 call $~lib/util/number/genDigits - local.get $8 + local.get $9 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $9 i32.add ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) @@ -7610,11 +7571,11 @@ (func $start:std/string (local $0 i32) (local $1 i32) - (local $2 f64) - (local $3 i32) + (local $2 i32) + (local $3 f64) (local $4 i32) (local $5 i32) - (local $6 i32) + (local $6 f32) (local $7 i32) (local $8 i32) (local $9 i32) @@ -7647,9 +7608,9 @@ (local $36 i32) (local $37 i32) (local $38 i32) - (local $39 i32) + (local $39 i64) (local $40 i32) - (local $41 f32) + (local $41 i32) (local $42 i32) (local $43 i32) (local $44 i32) @@ -7682,7 +7643,7 @@ (local $71 i32) (local $72 i32) (local $73 i32) - (local $74 i64) + (local $74 i32) (local $75 i32) (local $76 i32) (local $77 i32) @@ -8030,7 +7991,7 @@ global.set $~argumentsLength i32.const 0 call $~lib/string/String.fromCharCode@varargs - local.tee $42 + local.tee $7 i32.const 1296 call $~lib/string/String.__eq i32.eqz @@ -8046,7 +8007,7 @@ global.set $~argumentsLength i32.const 54 call $~lib/string/String.fromCharCode@varargs - local.tee $43 + local.tee $8 i32.const 1472 call $~lib/string/String.__eq i32.eqz @@ -8062,7 +8023,7 @@ global.set $~argumentsLength i32.const 65590 call $~lib/string/String.fromCharCode@varargs - local.tee $44 + local.tee $9 i32.const 1472 call $~lib/string/String.__eq i32.eqz @@ -8077,7 +8038,7 @@ i32.const 55296 i32.const 57088 call $~lib/string/String.fromCharCode - local.tee $45 + local.tee $10 i32.const 1504 call $~lib/string/String.__eq i32.eqz @@ -8091,7 +8052,7 @@ end i32.const 0 call $~lib/string/String.fromCodePoint - local.tee $46 + local.tee $11 i32.const 1296 call $~lib/string/String.__eq i32.eqz @@ -8105,7 +8066,7 @@ end i32.const 54 call $~lib/string/String.fromCodePoint - local.tee $47 + local.tee $12 i32.const 1472 call $~lib/string/String.__eq i32.eqz @@ -8119,7 +8080,7 @@ end i32.const 119558 call $~lib/string/String.fromCodePoint - local.tee $48 + local.tee $13 i32.const 1584 call $~lib/string/String.__eq i32.eqz @@ -8132,7 +8093,7 @@ unreachable end global.get $std/string/str - local.set $12 + local.set $5 i32.const 1616 if (result i32) i32.const 1616 @@ -8144,19 +8105,19 @@ drop block $__inlined_func$~lib/string/String#startsWith i32.const 0 - local.get $12 + local.get $5 call $~lib/string/String#get:length - local.tee $3 + local.tee $2 i32.const 0 - local.get $3 + local.get $2 i32.lt_s select - local.tee $9 + local.tee $4 i32.const 1616 call $~lib/string/String#get:length local.tee $0 i32.add - local.get $3 + local.get $2 i32.gt_s if i32.const 1616 @@ -8165,8 +8126,8 @@ local.set $0 br $__inlined_func$~lib/string/String#startsWith end - local.get $12 - local.get $9 + local.get $5 + local.get $4 i32.const 1616 local.get $0 call $~lib/util/string/compareImpl @@ -8186,10 +8147,10 @@ unreachable end global.get $std/string/str - local.set $9 + local.set $4 block $__inlined_func$~lib/string/String#endsWith i32.const 536870904 - local.get $9 + local.get $4 call $~lib/string/String#get:length local.tee $0 i32.const 536870904 @@ -8210,7 +8171,7 @@ local.set $0 br $__inlined_func$~lib/string/String#endsWith end - local.get $9 + local.get $4 local.get $0 i32.const 1680 local.get $1 @@ -8251,7 +8212,7 @@ i32.const 0 i32.const 1744 call $~lib/string/String#padStart - local.tee $49 + local.tee $14 global.get $std/string/str call $~lib/string/String.__eq i32.eqz @@ -8267,7 +8228,7 @@ i32.const 15 i32.const 1744 call $~lib/string/String#padStart - local.tee $50 + local.tee $15 global.get $std/string/str call $~lib/string/String.__eq i32.eqz @@ -8283,7 +8244,7 @@ i32.const 3 i32.const 1744 call $~lib/string/String#padStart - local.tee $51 + local.tee $16 i32.const 1776 call $~lib/string/String.__eq i32.eqz @@ -8299,7 +8260,7 @@ i32.const 10 i32.const 1280 call $~lib/string/String#padStart - local.tee $52 + local.tee $17 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -8315,7 +8276,7 @@ i32.const 100 i32.const 1280 call $~lib/string/String#padStart - local.tee $53 + local.tee $18 i32.const 1328 call $~lib/string/String.__eq i32.eqz @@ -8331,7 +8292,7 @@ i32.const 5 i32.const 1744 call $~lib/string/String#padStart - local.tee $54 + local.tee $19 i32.const 1840 call $~lib/string/String.__eq i32.eqz @@ -8347,7 +8308,7 @@ i32.const 6 i32.const 1872 call $~lib/string/String#padStart - local.tee $55 + local.tee $20 i32.const 1904 call $~lib/string/String.__eq i32.eqz @@ -8363,7 +8324,7 @@ i32.const 8 i32.const 1872 call $~lib/string/String#padStart - local.tee $56 + local.tee $21 i32.const 1936 call $~lib/string/String.__eq i32.eqz @@ -8379,7 +8340,7 @@ i32.const 0 i32.const 1744 call $~lib/string/String#padEnd - local.tee $57 + local.tee $22 global.get $std/string/str call $~lib/string/String.__eq i32.eqz @@ -8395,7 +8356,7 @@ i32.const 15 i32.const 1744 call $~lib/string/String#padEnd - local.tee $58 + local.tee $23 global.get $std/string/str call $~lib/string/String.__eq i32.eqz @@ -8411,7 +8372,7 @@ i32.const 3 i32.const 1744 call $~lib/string/String#padEnd - local.tee $59 + local.tee $24 i32.const 1776 call $~lib/string/String.__eq i32.eqz @@ -8427,7 +8388,7 @@ i32.const 10 i32.const 1280 call $~lib/string/String#padEnd - local.tee $60 + local.tee $25 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -8443,7 +8404,7 @@ i32.const 100 i32.const 1280 call $~lib/string/String#padEnd - local.tee $61 + local.tee $26 i32.const 1328 call $~lib/string/String.__eq i32.eqz @@ -8459,7 +8420,7 @@ i32.const 5 i32.const 1744 call $~lib/string/String#padEnd - local.tee $62 + local.tee $27 i32.const 1968 call $~lib/string/String.__eq i32.eqz @@ -8475,7 +8436,7 @@ i32.const 6 i32.const 1808 call $~lib/string/String#padEnd - local.tee $63 + local.tee $28 i32.const 2000 call $~lib/string/String.__eq i32.eqz @@ -8491,7 +8452,7 @@ i32.const 8 i32.const 1808 call $~lib/string/String#padEnd - local.tee $64 + local.tee $29 i32.const 2032 call $~lib/string/String.__eq i32.eqz @@ -8914,7 +8875,7 @@ end i32.const 1280 call $~lib/string/String#trimStart - local.tee $65 + local.tee $30 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -8928,7 +8889,7 @@ end i32.const 2288 call $~lib/string/String#trimStart - local.tee $66 + local.tee $31 i32.const 2288 call $~lib/string/String.__eq i32.eqz @@ -8942,7 +8903,7 @@ end i32.const 2320 call $~lib/string/String#trimStart - local.tee $67 + local.tee $32 i32.const 2368 call $~lib/string/String.__eq i32.eqz @@ -8956,7 +8917,7 @@ end i32.const 1280 call $~lib/string/String#trimEnd - local.tee $68 + local.tee $33 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -8970,7 +8931,7 @@ end i32.const 2288 call $~lib/string/String#trimEnd - local.tee $69 + local.tee $34 i32.const 2288 call $~lib/string/String.__eq i32.eqz @@ -8984,7 +8945,7 @@ end i32.const 2320 call $~lib/string/String#trimEnd - local.tee $70 + local.tee $35 i32.const 2400 call $~lib/string/String.__eq i32.eqz @@ -8998,7 +8959,7 @@ end i32.const 1280 call $~lib/string/String#trim - local.tee $71 + local.tee $36 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -9012,7 +8973,7 @@ end i32.const 2288 call $~lib/string/String#trim - local.tee $72 + local.tee $37 i32.const 2288 call $~lib/string/String.__eq i32.eqz @@ -9026,7 +8987,7 @@ end i32.const 2320 call $~lib/string/String#trim - local.tee $73 + local.tee $38 i32.const 1808 call $~lib/string/String.__eq i32.eqz @@ -9288,13 +9249,13 @@ i32.const 3008 i32.const 0 call $~lib/string/parseInt - local.tee $2 + local.tee $3 i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 - local.get $2 - local.get $2 + local.get $3 + local.get $3 f64.eq i32.and i32.eqz @@ -9428,8 +9389,8 @@ i32.const 1280 i32.const 0 call $~lib/string/parseInt - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -9442,8 +9403,8 @@ i32.const 3440 i32.const 0 call $~lib/string/parseInt - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -9456,8 +9417,8 @@ i32.const 3472 i32.const 0 call $~lib/string/parseInt - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -9470,8 +9431,8 @@ i32.const 1872 i32.const 37 call $~lib/string/parseInt - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -9484,8 +9445,8 @@ i32.const 3504 i32.const 0 call $~lib/string/parseInt - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -9498,8 +9459,8 @@ i32.const 3536 i32.const 0 call $~lib/string/parseInt - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -9513,11 +9474,11 @@ i32.const 0 call $~lib/util/string/strtol f32.demote_f64 - local.set $41 + local.set $6 i32.const 3536 call $~lib/rt/pure/__release - local.get $41 - local.get $41 + local.get $6 + local.get $6 f32.eq if i32.const 0 @@ -9530,8 +9491,8 @@ i32.const 3536 i32.const 0 call $~lib/string/parseInt - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -9799,8 +9760,8 @@ end i32.const 1280 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10448,8 +10409,8 @@ end i32.const 3472 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10461,8 +10422,8 @@ end i32.const 3440 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10474,8 +10435,8 @@ end i32.const 6144 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10487,8 +10448,8 @@ end i32.const 6176 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10500,8 +10461,8 @@ end i32.const 6208 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10513,8 +10474,8 @@ end i32.const 6240 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10526,8 +10487,8 @@ end i32.const 6272 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10539,8 +10500,8 @@ end i32.const 6304 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10552,8 +10513,8 @@ end i32.const 6336 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10565,8 +10526,8 @@ end i32.const 6368 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10578,8 +10539,8 @@ end i32.const 6400 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10591,8 +10552,8 @@ end i32.const 6432 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10604,8 +10565,8 @@ end i32.const 6464 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10617,8 +10578,8 @@ end i32.const 6496 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10630,8 +10591,8 @@ end i32.const 6528 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10643,8 +10604,8 @@ end i32.const 6560 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10956,8 +10917,8 @@ end i32.const 7696 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10969,8 +10930,8 @@ end i32.const 7728 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -10982,8 +10943,8 @@ end i32.const 7760 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -11032,16 +10993,16 @@ i32.const 8368 i32.const 8528 call $~lib/string/String.__concat - local.tee $75 + local.tee $40 i32.const 8688 call $~lib/string/String.__concat - local.tee $76 + local.tee $41 i32.const 8848 call $~lib/string/String.__concat - local.tee $77 + local.tee $42 i32.const 9008 call $~lib/string/String.__concat - local.tee $78 + local.tee $43 call $~lib/string/parseFloat f64.const 1797693134862315708145274e284 f64.ne @@ -11343,8 +11304,8 @@ end i32.const 11856 call $~lib/string/parseFloat - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 f64.eq if i32.const 0 @@ -11740,13 +11701,13 @@ end i32.const 65377 call $~lib/string/String.fromCodePoint - local.tee $12 + local.tee $5 i32.const 55296 call $~lib/string/String.fromCodePoint - local.tee $3 + local.tee $2 i32.const 56322 call $~lib/string/String.fromCodePoint - local.tee $9 + local.tee $4 call $~lib/string/String.__concat local.tee $1 call $~lib/rt/pure/__retain @@ -11761,11 +11722,11 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $2 call $~lib/rt/pure/__release - local.get $9 + local.get $4 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -11786,7 +11747,7 @@ i32.const 1280 i32.const 100 call $~lib/string/String#repeat - local.tee $79 + local.tee $44 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -11801,7 +11762,7 @@ i32.const 1328 i32.const 0 call $~lib/string/String#repeat - local.tee $80 + local.tee $45 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -11816,7 +11777,7 @@ i32.const 1328 i32.const 1 call $~lib/string/String#repeat - local.tee $81 + local.tee $46 i32.const 1328 call $~lib/string/String.__eq i32.eqz @@ -11831,7 +11792,7 @@ i32.const 1328 i32.const 2 call $~lib/string/String#repeat - local.tee $82 + local.tee $47 i32.const 12368 call $~lib/string/String.__eq i32.eqz @@ -11846,7 +11807,7 @@ i32.const 1328 i32.const 3 call $~lib/string/String#repeat - local.tee $83 + local.tee $48 i32.const 12448 call $~lib/string/String.__eq i32.eqz @@ -11861,7 +11822,7 @@ i32.const 11952 i32.const 4 call $~lib/string/String#repeat - local.tee $84 + local.tee $49 i32.const 12480 call $~lib/string/String.__eq i32.eqz @@ -11876,7 +11837,7 @@ i32.const 1328 i32.const 5 call $~lib/string/String#repeat - local.tee $85 + local.tee $50 i32.const 12512 call $~lib/string/String.__eq i32.eqz @@ -11891,7 +11852,7 @@ i32.const 1328 i32.const 6 call $~lib/string/String#repeat - local.tee $86 + local.tee $51 i32.const 12544 call $~lib/string/String.__eq i32.eqz @@ -11906,7 +11867,7 @@ i32.const 1328 i32.const 7 call $~lib/string/String#repeat - local.tee $87 + local.tee $52 i32.const 12576 call $~lib/string/String.__eq i32.eqz @@ -11922,7 +11883,7 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replace - local.tee $88 + local.tee $53 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -11938,7 +11899,7 @@ i32.const 1280 i32.const 3472 call $~lib/string/String#replace - local.tee $89 + local.tee $54 i32.const 3472 call $~lib/string/String.__eq i32.eqz @@ -11954,7 +11915,7 @@ i32.const 3472 i32.const 1280 call $~lib/string/String#replace - local.tee $90 + local.tee $55 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -11970,7 +11931,7 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replace - local.tee $91 + local.tee $56 i32.const 3472 call $~lib/string/String.__eq i32.eqz @@ -11986,7 +11947,7 @@ i32.const 3440 i32.const 3472 call $~lib/string/String#replace - local.tee $92 + local.tee $57 i32.const 1808 call $~lib/string/String.__eq i32.eqz @@ -12002,7 +11963,7 @@ i32.const 1808 i32.const 3472 call $~lib/string/String#replace - local.tee $93 + local.tee $58 i32.const 3472 call $~lib/string/String.__eq i32.eqz @@ -12018,7 +11979,7 @@ i32.const 2256 i32.const 3472 call $~lib/string/String#replace - local.tee $94 + local.tee $59 i32.const 1808 call $~lib/string/String.__eq i32.eqz @@ -12034,7 +11995,7 @@ i32.const 11952 i32.const 11952 call $~lib/string/String#replace - local.tee $95 + local.tee $60 i32.const 1808 call $~lib/string/String.__eq i32.eqz @@ -12050,7 +12011,7 @@ i32.const 3440 i32.const 3472 call $~lib/string/String#replace - local.tee $96 + local.tee $61 i32.const 12640 call $~lib/string/String.__eq i32.eqz @@ -12066,7 +12027,7 @@ i32.const 1280 i32.const 3472 call $~lib/string/String#replace - local.tee $97 + local.tee $62 i32.const 12672 call $~lib/string/String.__eq i32.eqz @@ -12082,7 +12043,7 @@ i32.const 12736 i32.const 3472 call $~lib/string/String#replace - local.tee $98 + local.tee $63 i32.const 12672 call $~lib/string/String.__eq i32.eqz @@ -12098,7 +12059,7 @@ i32.const 12768 i32.const 12800 call $~lib/string/String#replace - local.tee $99 + local.tee $64 i32.const 12832 call $~lib/string/String.__eq i32.eqz @@ -12114,7 +12075,7 @@ i32.const 12768 i32.const 1280 call $~lib/string/String#replace - local.tee $100 + local.tee $65 i32.const 11952 call $~lib/string/String.__eq i32.eqz @@ -12130,7 +12091,7 @@ i32.const 1280 i32.const 1808 call $~lib/string/String#replaceAll - local.tee $101 + local.tee $66 i32.const 1808 call $~lib/string/String.__eq i32.eqz @@ -12146,7 +12107,7 @@ i32.const 3440 i32.const 3472 call $~lib/string/String#replaceAll - local.tee $102 + local.tee $67 i32.const 1808 call $~lib/string/String.__eq i32.eqz @@ -12162,7 +12123,7 @@ i32.const 1808 i32.const 3472 call $~lib/string/String#replaceAll - local.tee $103 + local.tee $68 i32.const 12800 call $~lib/string/String.__eq i32.eqz @@ -12178,7 +12139,7 @@ i32.const 1808 i32.const 3472 call $~lib/string/String#replaceAll - local.tee $104 + local.tee $69 i32.const 12912 call $~lib/string/String.__eq i32.eqz @@ -12194,7 +12155,7 @@ i32.const 11952 i32.const 11952 call $~lib/string/String#replaceAll - local.tee $105 + local.tee $70 i32.const 2000 call $~lib/string/String.__eq i32.eqz @@ -12210,7 +12171,7 @@ i32.const 1328 i32.const 12912 call $~lib/string/String#replaceAll - local.tee $106 + local.tee $71 i32.const 12976 call $~lib/string/String.__eq i32.eqz @@ -12226,7 +12187,7 @@ i32.const 11952 i32.const 12800 call $~lib/string/String#replaceAll - local.tee $107 + local.tee $72 i32.const 13024 call $~lib/string/String.__eq i32.eqz @@ -12242,7 +12203,7 @@ i32.const 13088 i32.const 12800 call $~lib/string/String#replaceAll - local.tee $108 + local.tee $73 i32.const 13120 call $~lib/string/String.__eq i32.eqz @@ -12258,7 +12219,7 @@ i32.const 2256 i32.const 3472 call $~lib/string/String#replaceAll - local.tee $109 + local.tee $74 i32.const 1808 call $~lib/string/String.__eq i32.eqz @@ -12274,7 +12235,7 @@ i32.const 13152 i32.const 12800 call $~lib/string/String#replaceAll - local.tee $110 + local.tee $75 i32.const 2256 call $~lib/string/String.__eq i32.eqz @@ -12290,7 +12251,7 @@ i32.const 13184 i32.const 3472 call $~lib/string/String#replaceAll - local.tee $111 + local.tee $76 i32.const 13216 call $~lib/string/String.__eq i32.eqz @@ -12306,7 +12267,7 @@ i32.const 11952 i32.const 3472 call $~lib/string/String#replaceAll - local.tee $112 + local.tee $77 i32.const 3472 call $~lib/string/String.__eq i32.eqz @@ -12322,7 +12283,7 @@ i32.const 3440 i32.const 3472 call $~lib/string/String#replaceAll - local.tee $113 + local.tee $78 i32.const 13248 call $~lib/string/String.__eq i32.eqz @@ -12338,7 +12299,7 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $114 + local.tee $79 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -12354,7 +12315,7 @@ i32.const 1280 i32.const 3472 call $~lib/string/String#replaceAll - local.tee $115 + local.tee $80 i32.const 3472 call $~lib/string/String.__eq i32.eqz @@ -12370,7 +12331,7 @@ i32.const 3472 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $116 + local.tee $81 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -12386,7 +12347,7 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $117 + local.tee $82 i32.const 3472 call $~lib/string/String.__eq i32.eqz @@ -12402,7 +12363,7 @@ i32.const 1808 i32.const 3440 call $~lib/string/String#replaceAll - local.tee $118 + local.tee $83 i32.const 3440 call $~lib/string/String.__eq i32.eqz @@ -12418,7 +12379,7 @@ i32.const 2224 i32.const 3440 call $~lib/string/String#replaceAll - local.tee $119 + local.tee $84 i32.const 1808 call $~lib/string/String.__eq i32.eqz @@ -12434,7 +12395,7 @@ i32.const 1280 i32.const 3472 call $~lib/string/String#replaceAll - local.tee $120 + local.tee $85 i32.const 13280 call $~lib/string/String.__eq i32.eqz @@ -12450,7 +12411,7 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $121 + local.tee $86 i32.const 1808 call $~lib/string/String.__eq i32.eqz @@ -12470,7 +12431,7 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#slice - local.tee $122 + local.tee $87 i32.const 13312 call $~lib/string/String.__eq i32.eqz @@ -12486,7 +12447,7 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#slice - local.tee $123 + local.tee $88 i32.const 13360 call $~lib/string/String.__eq i32.eqz @@ -12502,7 +12463,7 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#slice - local.tee $124 + local.tee $89 i32.const 13392 call $~lib/string/String.__eq i32.eqz @@ -12518,7 +12479,7 @@ i32.const 2 i32.const 7 call $~lib/string/String#slice - local.tee $125 + local.tee $90 i32.const 13424 call $~lib/string/String.__eq i32.eqz @@ -12534,7 +12495,7 @@ i32.const -11 i32.const -6 call $~lib/string/String#slice - local.tee $126 + local.tee $91 i32.const 13456 call $~lib/string/String.__eq i32.eqz @@ -12550,7 +12511,7 @@ i32.const 4 i32.const 3 call $~lib/string/String#slice - local.tee $127 + local.tee $92 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -12566,7 +12527,7 @@ i32.const 0 i32.const -1 call $~lib/string/String#slice - local.tee $128 + local.tee $93 i32.const 13488 call $~lib/string/String.__eq i32.eqz @@ -12582,7 +12543,7 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#substr - local.tee $129 + local.tee $94 i32.const 13312 call $~lib/string/String.__eq i32.eqz @@ -12598,7 +12559,7 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#substr - local.tee $130 + local.tee $95 i32.const 13360 call $~lib/string/String.__eq i32.eqz @@ -12614,7 +12575,7 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#substr - local.tee $131 + local.tee $96 i32.const 13392 call $~lib/string/String.__eq i32.eqz @@ -12630,7 +12591,7 @@ i32.const 2 i32.const 7 call $~lib/string/String#substr - local.tee $132 + local.tee $97 i32.const 13536 call $~lib/string/String.__eq i32.eqz @@ -12646,7 +12607,7 @@ i32.const -11 i32.const -6 call $~lib/string/String#substr - local.tee $133 + local.tee $98 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -12662,7 +12623,7 @@ i32.const 4 i32.const 3 call $~lib/string/String#substr - local.tee $134 + local.tee $99 i32.const 13568 call $~lib/string/String.__eq i32.eqz @@ -12678,7 +12639,7 @@ i32.const 0 i32.const -1 call $~lib/string/String#substr - local.tee $135 + local.tee $100 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -12694,7 +12655,7 @@ i32.const 0 i32.const 100 call $~lib/string/String#substr - local.tee $136 + local.tee $101 i32.const 13312 call $~lib/string/String.__eq i32.eqz @@ -12710,7 +12671,7 @@ i32.const 4 i32.const 4 call $~lib/string/String#substr - local.tee $137 + local.tee $102 i32.const 13600 call $~lib/string/String.__eq i32.eqz @@ -12726,7 +12687,7 @@ i32.const 4 i32.const -3 call $~lib/string/String#substr - local.tee $138 + local.tee $103 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -12742,7 +12703,7 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#substring - local.tee $139 + local.tee $104 i32.const 13312 call $~lib/string/String.__eq i32.eqz @@ -12758,7 +12719,7 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#substring - local.tee $140 + local.tee $105 i32.const 13312 call $~lib/string/String.__eq i32.eqz @@ -12774,7 +12735,7 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#substring - local.tee $141 + local.tee $106 i32.const 13312 call $~lib/string/String.__eq i32.eqz @@ -12790,7 +12751,7 @@ i32.const 2 i32.const 7 call $~lib/string/String#substring - local.tee $142 + local.tee $107 i32.const 13424 call $~lib/string/String.__eq i32.eqz @@ -12806,7 +12767,7 @@ i32.const -11 i32.const -6 call $~lib/string/String#substring - local.tee $143 + local.tee $108 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -12822,7 +12783,7 @@ i32.const 4 i32.const 3 call $~lib/string/String#substring - local.tee $144 + local.tee $109 i32.const 13632 call $~lib/string/String.__eq i32.eqz @@ -12838,7 +12799,7 @@ i32.const 0 i32.const -1 call $~lib/string/String#substring - local.tee $145 + local.tee $110 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -12854,7 +12815,7 @@ i32.const 0 i32.const 100 call $~lib/string/String#substring - local.tee $146 + local.tee $111 i32.const 13312 call $~lib/string/String.__eq i32.eqz @@ -12870,7 +12831,7 @@ i32.const 4 i32.const 4 call $~lib/string/String#substring - local.tee $147 + local.tee $112 i32.const 1280 call $~lib/string/String.__eq i32.eqz @@ -12886,7 +12847,7 @@ i32.const 4 i32.const -3 call $~lib/string/String#substring - local.tee $148 + local.tee $113 i32.const 2256 call $~lib/string/String.__eq i32.eqz @@ -12902,22 +12863,25 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#split - local.tee $1 + local.tee $4 i32.load offset=12 i32.const 1 i32.eq if - local.get $1 + local.get $4 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1280 call $~lib/string/String.__eq - local.set $10 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $10 + local.get $2 i32.eqz if i32.const 0 @@ -12931,10 +12895,10 @@ i32.const 1280 i32.const 2147483647 call $~lib/string/String#split - local.set $0 - local.get $1 + local.set $1 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.load offset=12 if i32.const 0 @@ -12948,25 +12912,27 @@ i32.const 2064 i32.const 2147483647 call $~lib/string/String#split - local.set $10 - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.get $10 + local.tee $1 i32.load offset=12 i32.const 1 i32.eq if - local.get $10 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1280 call $~lib/string/String.__eq - local.set $13 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $13 + local.get $2 i32.eqz if i32.const 0 @@ -12980,10 +12946,9 @@ i32.const 6272 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $10 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.load offset=12 i32.const 1 i32.eq @@ -12994,11 +12959,14 @@ local.tee $0 i32.const 13888 call $~lib/string/String.__eq - local.set $6 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $6 + local.get $2 i32.eqz if i32.const 0 @@ -13012,49 +12980,57 @@ i32.const 2064 i32.const 2147483647 call $~lib/string/String#split - local.set $6 local.get $1 call $~lib/rt/pure/__release - local.get $6 + local.tee $1 i32.load offset=12 i32.const 3 i32.eq if - local.get $6 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 call $~lib/string/String.__eq - local.set $14 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $14 + local.get $2 if - local.get $6 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 11920 call $~lib/string/String.__eq - local.set $15 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $15 + local.get $2 if - local.get $6 + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 12768 call $~lib/string/String.__eq - local.set $16 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $16 + local.get $2 i32.eqz if i32.const 0 @@ -13068,10 +13044,9 @@ i32.const 13952 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $6 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.load offset=12 i32.const 3 i32.eq @@ -13082,11 +13057,14 @@ local.tee $0 i32.const 1328 call $~lib/string/String.__eq - local.set $17 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $17 + local.get $2 if local.get $1 i32.const 1 @@ -13094,11 +13072,14 @@ local.tee $0 i32.const 11920 call $~lib/string/String.__eq - local.set $18 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $18 + local.get $2 if local.get $1 i32.const 2 @@ -13106,11 +13087,14 @@ local.tee $0 i32.const 12768 call $~lib/string/String.__eq - local.set $4 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $4 + local.get $2 i32.eqz if i32.const 0 @@ -13124,61 +13108,72 @@ i32.const 2064 i32.const 2147483647 call $~lib/string/String#split - local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.tee $1 i32.load offset=12 i32.const 4 i32.eq if - local.get $4 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 call $~lib/string/String.__eq - local.set $19 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $19 + local.get $2 if - local.get $4 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 11920 call $~lib/string/String.__eq - local.set $20 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $20 + local.get $2 if - local.get $4 + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1280 call $~lib/string/String.__eq - local.set $21 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $21 + local.get $2 if - local.get $4 + local.get $1 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 12768 call $~lib/string/String.__eq - local.set $22 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $22 + local.get $2 i32.eqz if i32.const 0 @@ -13192,10 +13187,9 @@ i32.const 2064 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $4 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.load offset=12 i32.const 4 i32.eq @@ -13206,11 +13200,14 @@ local.tee $0 i32.const 1280 call $~lib/string/String.__eq - local.set $23 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $23 + local.get $2 if local.get $1 i32.const 1 @@ -13218,11 +13215,14 @@ local.tee $0 i32.const 1328 call $~lib/string/String.__eq - local.set $24 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $24 + local.get $2 if local.get $1 i32.const 2 @@ -13230,11 +13230,14 @@ local.tee $0 i32.const 11920 call $~lib/string/String.__eq - local.set $25 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $25 + local.get $2 if local.get $1 i32.const 3 @@ -13242,11 +13245,14 @@ local.tee $0 i32.const 12768 call $~lib/string/String.__eq - local.set $5 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $5 + local.get $2 i32.eqz if i32.const 0 @@ -13260,61 +13266,72 @@ i32.const 2064 i32.const 2147483647 call $~lib/string/String#split - local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.tee $1 i32.load offset=12 i32.const 4 i32.eq if - local.get $5 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 call $~lib/string/String.__eq - local.set $26 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $26 + local.get $2 if - local.get $5 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 11920 call $~lib/string/String.__eq - local.set $27 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $27 + local.get $2 if - local.get $5 + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 12768 call $~lib/string/String.__eq - local.set $28 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $28 + local.get $2 if - local.get $5 + local.get $1 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1280 call $~lib/string/String.__eq - local.set $29 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $29 + local.get $2 i32.eqz if i32.const 0 @@ -13328,49 +13345,58 @@ i32.const 1280 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $5 - call $~lib/rt/pure/__release + local.set $0 local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.load offset=12 i32.const 3 i32.eq if - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 1328 call $~lib/string/String.__eq - local.set $30 - local.get $0 + local.set $2 + local.get $1 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $30 + local.get $2 if - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 11920 call $~lib/string/String.__eq - local.set $31 - local.get $0 + local.set $2 + local.get $1 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $31 + local.get $2 if - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 12768 call $~lib/string/String.__eq - local.set $11 - local.get $0 + local.set $2 + local.get $1 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $11 + local.get $2 i32.eqz if i32.const 0 @@ -13384,10 +13410,10 @@ i32.const 1280 i32.const 0 call $~lib/string/String#split - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + local.set $1 local.get $0 + call $~lib/rt/pure/__release + local.get $1 i32.load offset=12 if i32.const 0 @@ -13401,25 +13427,27 @@ i32.const 1280 i32.const 1 call $~lib/string/String#split - local.set $11 - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.get $11 + local.tee $1 i32.load offset=12 i32.const 1 i32.eq if - local.get $11 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 call $~lib/string/String.__eq - local.set $32 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $32 + local.get $2 i32.eqz if i32.const 0 @@ -13433,10 +13461,9 @@ i32.const 2064 i32.const 1 call $~lib/string/String#split - local.set $1 - local.get $11 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.load offset=12 i32.const 1 i32.eq @@ -13447,11 +13474,14 @@ local.tee $0 i32.const 1328 call $~lib/string/String.__eq - local.set $7 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $7 + local.get $2 i32.eqz if i32.const 0 @@ -13465,49 +13495,57 @@ i32.const 1280 i32.const 4 call $~lib/string/String#split - local.set $7 local.get $1 call $~lib/rt/pure/__release - local.get $7 + local.tee $1 i32.load offset=12 i32.const 3 i32.eq if - local.get $7 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 call $~lib/string/String.__eq - local.set $33 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $33 + local.get $2 if - local.get $7 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 11920 call $~lib/string/String.__eq - local.set $34 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $34 + local.get $2 if - local.get $7 + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 12768 call $~lib/string/String.__eq - local.set $8 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $8 + local.get $2 i32.eqz if i32.const 0 @@ -13521,49 +13559,57 @@ i32.const 1280 i32.const -1 call $~lib/string/String#split - local.set $8 - local.get $7 + local.get $1 call $~lib/rt/pure/__release - local.get $8 + local.tee $1 i32.load offset=12 i32.const 3 i32.eq if - local.get $8 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 call $~lib/string/String.__eq - local.set $35 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $35 + local.get $2 if - local.get $8 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 11920 call $~lib/string/String.__eq - local.set $36 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $36 + local.get $2 if - local.get $8 + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 12768 call $~lib/string/String.__eq - local.set $37 + local.set $2 local.get $0 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $37 + local.get $2 i32.eqz if i32.const 0 @@ -13577,49 +13623,58 @@ i32.const 2064 i32.const -1 call $~lib/string/String#split - local.set $1 - local.get $8 - call $~lib/rt/pure/__release + local.set $0 local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.load offset=12 i32.const 3 i32.eq if - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 1328 call $~lib/string/String.__eq - local.set $38 - local.get $0 + local.set $2 + local.get $1 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $38 + local.get $2 if - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 11920 call $~lib/string/String.__eq - local.set $39 - local.get $0 + local.set $2 + local.get $1 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $39 + local.get $2 if - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 12768 call $~lib/string/String.__eq - local.set $40 - local.get $0 + local.set $2 + local.get $1 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $2 end - local.get $40 + local.get $2 i32.eqz if i32.const 0 @@ -13629,12 +13684,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release i32.const 0 i32.const 10 call $~lib/util/number/itoa32 - local.tee $149 + local.tee $114 i32.const 2432 call $~lib/string/String.__eq i32.eqz @@ -13649,7 +13704,7 @@ i32.const 1 i32.const 10 call $~lib/util/number/itoa32 - local.tee $150 + local.tee $115 i32.const 2496 call $~lib/string/String.__eq i32.eqz @@ -13664,7 +13719,7 @@ i32.const 8 i32.const 10 call $~lib/util/number/itoa32 - local.tee $151 + local.tee $116 i32.const 14368 call $~lib/string/String.__eq i32.eqz @@ -13679,7 +13734,7 @@ i32.const 12 i32.const 10 call $~lib/util/number/itoa32 - local.tee $152 + local.tee $117 i32.const 14400 call $~lib/string/String.__eq i32.eqz @@ -13694,7 +13749,7 @@ i32.const 123 i32.const 10 call $~lib/util/number/itoa32 - local.tee $153 + local.tee $118 i32.const 1872 call $~lib/string/String.__eq i32.eqz @@ -13709,7 +13764,7 @@ i32.const -1000 i32.const 10 call $~lib/util/number/itoa32 - local.tee $154 + local.tee $119 i32.const 14432 call $~lib/string/String.__eq i32.eqz @@ -13724,7 +13779,7 @@ i32.const 1234 i32.const 10 call $~lib/util/number/itoa32 - local.tee $155 + local.tee $120 i32.const 14464 call $~lib/string/String.__eq i32.eqz @@ -13739,7 +13794,7 @@ i32.const 12345 i32.const 10 call $~lib/util/number/itoa32 - local.tee $156 + local.tee $121 i32.const 14496 call $~lib/string/String.__eq i32.eqz @@ -13754,7 +13809,7 @@ i32.const 123456 i32.const 10 call $~lib/util/number/itoa32 - local.tee $157 + local.tee $122 i32.const 14528 call $~lib/string/String.__eq i32.eqz @@ -13769,7 +13824,7 @@ i32.const 1111111 i32.const 10 call $~lib/util/number/itoa32 - local.tee $158 + local.tee $123 i32.const 14560 call $~lib/string/String.__eq i32.eqz @@ -13784,7 +13839,7 @@ i32.const 1234567 i32.const 10 call $~lib/util/number/itoa32 - local.tee $159 + local.tee $124 i32.const 14592 call $~lib/string/String.__eq i32.eqz @@ -13799,7 +13854,7 @@ i32.const 12345678 i32.const 10 call $~lib/util/number/itoa32 - local.tee $160 + local.tee $125 i32.const 14624 call $~lib/string/String.__eq i32.eqz @@ -13814,7 +13869,7 @@ i32.const 123456789 i32.const 10 call $~lib/util/number/itoa32 - local.tee $161 + local.tee $126 i32.const 14656 call $~lib/string/String.__eq i32.eqz @@ -13829,7 +13884,7 @@ i32.const 2147483646 i32.const 10 call $~lib/util/number/itoa32 - local.tee $162 + local.tee $127 i32.const 14704 call $~lib/string/String.__eq i32.eqz @@ -13844,7 +13899,7 @@ i32.const 2147483647 i32.const 10 call $~lib/util/number/itoa32 - local.tee $163 + local.tee $128 i32.const 14752 call $~lib/string/String.__eq i32.eqz @@ -13859,7 +13914,7 @@ i32.const -2147483648 i32.const 10 call $~lib/util/number/itoa32 - local.tee $164 + local.tee $129 i32.const 14800 call $~lib/string/String.__eq i32.eqz @@ -13874,7 +13929,7 @@ i32.const -1 i32.const 10 call $~lib/util/number/itoa32 - local.tee $165 + local.tee $130 i32.const 14848 call $~lib/string/String.__eq i32.eqz @@ -13889,7 +13944,7 @@ i32.const 0 i32.const 10 call $~lib/util/number/utoa32 - local.tee $166 + local.tee $131 i32.const 2432 call $~lib/string/String.__eq i32.eqz @@ -13904,7 +13959,7 @@ i32.const 1000 i32.const 10 call $~lib/util/number/utoa32 - local.tee $167 + local.tee $132 i32.const 14880 call $~lib/string/String.__eq i32.eqz @@ -13919,7 +13974,7 @@ i32.const 2147483647 i32.const 10 call $~lib/util/number/utoa32 - local.tee $168 + local.tee $133 i32.const 14752 call $~lib/string/String.__eq i32.eqz @@ -13934,7 +13989,7 @@ i32.const -2147483648 i32.const 10 call $~lib/util/number/utoa32 - local.tee $169 + local.tee $134 i32.const 14912 call $~lib/string/String.__eq i32.eqz @@ -13949,7 +14004,7 @@ i32.const -1 i32.const 10 call $~lib/util/number/utoa32 - local.tee $170 + local.tee $135 i32.const 14960 call $~lib/string/String.__eq i32.eqz @@ -13964,7 +14019,7 @@ i32.const 0 i32.const 16 call $~lib/util/number/utoa32 - local.tee $171 + local.tee $136 i32.const 2432 call $~lib/string/String.__eq i32.eqz @@ -13979,7 +14034,7 @@ i32.const 1 i32.const 16 call $~lib/util/number/utoa32 - local.tee $172 + local.tee $137 i32.const 2496 call $~lib/string/String.__eq i32.eqz @@ -13994,7 +14049,7 @@ i32.const 8 i32.const 16 call $~lib/util/number/utoa32 - local.tee $173 + local.tee $138 i32.const 14368 call $~lib/string/String.__eq i32.eqz @@ -14009,7 +14064,7 @@ i32.const 12 i32.const 16 call $~lib/util/number/utoa32 - local.tee $174 + local.tee $139 i32.const 12768 call $~lib/string/String.__eq i32.eqz @@ -14024,7 +14079,7 @@ i32.const 123 i32.const 16 call $~lib/util/number/utoa32 - local.tee $175 + local.tee $140 i32.const 15008 call $~lib/string/String.__eq i32.eqz @@ -14039,7 +14094,7 @@ i32.const 1234 i32.const 16 call $~lib/util/number/utoa32 - local.tee $176 + local.tee $141 i32.const 15040 call $~lib/string/String.__eq i32.eqz @@ -14054,7 +14109,7 @@ i32.const 12345 i32.const 16 call $~lib/util/number/utoa32 - local.tee $177 + local.tee $142 i32.const 15072 call $~lib/string/String.__eq i32.eqz @@ -14069,7 +14124,7 @@ i32.const 123456 i32.const 16 call $~lib/util/number/utoa32 - local.tee $178 + local.tee $143 i32.const 15104 call $~lib/string/String.__eq i32.eqz @@ -14084,7 +14139,7 @@ i32.const 1111111 i32.const 16 call $~lib/util/number/utoa32 - local.tee $179 + local.tee $144 i32.const 15136 call $~lib/string/String.__eq i32.eqz @@ -14099,7 +14154,7 @@ i32.const 1234567 i32.const 16 call $~lib/util/number/utoa32 - local.tee $180 + local.tee $145 i32.const 15168 call $~lib/string/String.__eq i32.eqz @@ -14114,7 +14169,7 @@ i32.const 12345678 i32.const 16 call $~lib/util/number/utoa32 - local.tee $181 + local.tee $146 i32.const 15200 call $~lib/string/String.__eq i32.eqz @@ -14129,7 +14184,7 @@ i32.const 123456789 i32.const 16 call $~lib/util/number/utoa32 - local.tee $182 + local.tee $147 i32.const 15232 call $~lib/string/String.__eq i32.eqz @@ -14144,7 +14199,7 @@ i32.const 2147483646 i32.const 16 call $~lib/util/number/utoa32 - local.tee $183 + local.tee $148 i32.const 15264 call $~lib/string/String.__eq i32.eqz @@ -14159,7 +14214,7 @@ i32.const 2147483647 i32.const 16 call $~lib/util/number/utoa32 - local.tee $184 + local.tee $149 i32.const 15296 call $~lib/string/String.__eq i32.eqz @@ -14174,7 +14229,7 @@ i32.const -2147483648 i32.const 16 call $~lib/util/number/utoa32 - local.tee $185 + local.tee $150 i32.const 15328 call $~lib/string/String.__eq i32.eqz @@ -14189,7 +14244,7 @@ i32.const -1 i32.const 16 call $~lib/util/number/utoa32 - local.tee $186 + local.tee $151 i32.const 15360 call $~lib/string/String.__eq i32.eqz @@ -14204,7 +14259,7 @@ i32.const 0 i32.const 16 call $~lib/util/number/itoa32 - local.tee $187 + local.tee $152 i32.const 2432 call $~lib/string/String.__eq i32.eqz @@ -14219,7 +14274,7 @@ i32.const -4096 i32.const 16 call $~lib/util/number/itoa32 - local.tee $188 + local.tee $153 i32.const 14432 call $~lib/string/String.__eq i32.eqz @@ -14234,7 +14289,7 @@ i32.const 2147483647 i32.const 16 call $~lib/util/number/itoa32 - local.tee $189 + local.tee $154 i32.const 15296 call $~lib/string/String.__eq i32.eqz @@ -14249,7 +14304,7 @@ i32.const -2147483647 i32.const 16 call $~lib/util/number/itoa32 - local.tee $190 + local.tee $155 i32.const 15392 call $~lib/string/String.__eq i32.eqz @@ -14264,7 +14319,7 @@ i32.const -268435455 i32.const 16 call $~lib/util/number/itoa32 - local.tee $191 + local.tee $156 i32.const 15440 call $~lib/string/String.__eq i32.eqz @@ -14279,7 +14334,7 @@ i32.const -2147483648 i32.const 16 call $~lib/util/number/itoa32 - local.tee $192 + local.tee $157 i32.const 15472 call $~lib/string/String.__eq i32.eqz @@ -14294,7 +14349,7 @@ i32.const -2147483648 i32.const 16 call $~lib/util/number/itoa32 - local.tee $193 + local.tee $158 i32.const 15472 call $~lib/string/String.__eq i32.eqz @@ -14309,7 +14364,7 @@ i32.const 0 i32.const 2 call $~lib/util/number/utoa32 - local.tee $194 + local.tee $159 i32.const 2432 call $~lib/string/String.__eq i32.eqz @@ -14324,7 +14379,7 @@ i32.const 1 i32.const 2 call $~lib/util/number/utoa32 - local.tee $195 + local.tee $160 i32.const 2496 call $~lib/string/String.__eq i32.eqz @@ -14339,7 +14394,7 @@ i32.const 3 i32.const 2 call $~lib/util/number/utoa32 - local.tee $196 + local.tee $161 i32.const 15520 call $~lib/string/String.__eq i32.eqz @@ -14354,7 +14409,7 @@ i32.const 7 i32.const 2 call $~lib/util/number/utoa32 - local.tee $197 + local.tee $162 i32.const 15552 call $~lib/string/String.__eq i32.eqz @@ -14369,7 +14424,7 @@ i32.const 14 i32.const 2 call $~lib/util/number/utoa32 - local.tee $198 + local.tee $163 i32.const 15584 call $~lib/string/String.__eq i32.eqz @@ -14384,7 +14439,7 @@ i32.const 29 i32.const 2 call $~lib/util/number/utoa32 - local.tee $199 + local.tee $164 i32.const 15616 call $~lib/string/String.__eq i32.eqz @@ -14399,7 +14454,7 @@ i32.const 59 i32.const 2 call $~lib/util/number/utoa32 - local.tee $200 + local.tee $165 i32.const 15648 call $~lib/string/String.__eq i32.eqz @@ -14414,7 +14469,7 @@ i32.const 4095 i32.const 2 call $~lib/util/number/utoa32 - local.tee $201 + local.tee $166 i32.const 15680 call $~lib/string/String.__eq i32.eqz @@ -14429,7 +14484,7 @@ i32.const 33554431 i32.const 2 call $~lib/util/number/utoa32 - local.tee $202 + local.tee $167 i32.const 15728 call $~lib/string/String.__eq i32.eqz @@ -14444,7 +14499,7 @@ i32.const -12 i32.const 2 call $~lib/util/number/utoa32 - local.tee $203 + local.tee $168 i32.const 15808 call $~lib/string/String.__eq i32.eqz @@ -14459,7 +14514,7 @@ i32.const -4 i32.const 2 call $~lib/util/number/utoa32 - local.tee $204 + local.tee $169 i32.const 15888 call $~lib/string/String.__eq i32.eqz @@ -14474,7 +14529,7 @@ i32.const -2 i32.const 2 call $~lib/util/number/utoa32 - local.tee $205 + local.tee $170 i32.const 15968 call $~lib/string/String.__eq i32.eqz @@ -14489,7 +14544,7 @@ i32.const -1 i32.const 2 call $~lib/util/number/utoa32 - local.tee $206 + local.tee $171 i32.const 16048 call $~lib/string/String.__eq i32.eqz @@ -14504,7 +14559,7 @@ i32.const -2047 i32.const 2 call $~lib/util/number/itoa32 - local.tee $207 + local.tee $172 i32.const 16128 call $~lib/string/String.__eq i32.eqz @@ -14519,7 +14574,7 @@ i32.const -1 i32.const 3 call $~lib/util/number/utoa32 - local.tee $208 + local.tee $173 i32.const 16176 call $~lib/string/String.__eq i32.eqz @@ -14534,7 +14589,7 @@ i32.const -1 i32.const 4 call $~lib/util/number/utoa32 - local.tee $209 + local.tee $174 i32.const 16240 call $~lib/string/String.__eq i32.eqz @@ -14549,7 +14604,7 @@ i32.const -1 i32.const 5 call $~lib/util/number/utoa32 - local.tee $210 + local.tee $175 i32.const 16288 call $~lib/string/String.__eq i32.eqz @@ -14564,7 +14619,7 @@ i32.const -1 i32.const 8 call $~lib/util/number/utoa32 - local.tee $211 + local.tee $176 i32.const 16336 call $~lib/string/String.__eq i32.eqz @@ -14579,7 +14634,7 @@ i32.const -1 i32.const 11 call $~lib/util/number/utoa32 - local.tee $212 + local.tee $177 i32.const 16384 call $~lib/string/String.__eq i32.eqz @@ -14594,7 +14649,7 @@ i32.const -1 i32.const 15 call $~lib/util/number/utoa32 - local.tee $213 + local.tee $178 i32.const 16432 call $~lib/string/String.__eq i32.eqz @@ -14609,7 +14664,7 @@ i32.const -1 i32.const 17 call $~lib/util/number/utoa32 - local.tee $214 + local.tee $179 i32.const 16480 call $~lib/string/String.__eq i32.eqz @@ -14624,7 +14679,7 @@ i32.const -1 i32.const 21 call $~lib/util/number/utoa32 - local.tee $215 + local.tee $180 i32.const 16512 call $~lib/string/String.__eq i32.eqz @@ -14639,7 +14694,7 @@ i32.const -1 i32.const 27 call $~lib/util/number/utoa32 - local.tee $216 + local.tee $181 i32.const 16544 call $~lib/string/String.__eq i32.eqz @@ -14654,7 +14709,7 @@ i32.const -1 i32.const 32 call $~lib/util/number/utoa32 - local.tee $217 + local.tee $182 i32.const 16576 call $~lib/string/String.__eq i32.eqz @@ -14669,7 +14724,7 @@ i32.const -1 i32.const 36 call $~lib/util/number/utoa32 - local.tee $218 + local.tee $183 i32.const 16608 call $~lib/string/String.__eq i32.eqz @@ -14684,7 +14739,7 @@ i64.const 0 i32.const 10 call $~lib/util/number/utoa64 - local.tee $219 + local.tee $184 i32.const 2432 call $~lib/string/String.__eq i32.eqz @@ -14699,7 +14754,7 @@ i64.const 12 i32.const 10 call $~lib/util/number/utoa64 - local.tee $220 + local.tee $185 i32.const 14400 call $~lib/string/String.__eq i32.eqz @@ -14714,7 +14769,7 @@ i64.const 123 i32.const 10 call $~lib/util/number/utoa64 - local.tee $221 + local.tee $186 i32.const 1872 call $~lib/string/String.__eq i32.eqz @@ -14729,7 +14784,7 @@ i64.const 1234 i32.const 10 call $~lib/util/number/utoa64 - local.tee $222 + local.tee $187 i32.const 14464 call $~lib/string/String.__eq i32.eqz @@ -14744,7 +14799,7 @@ i64.const 12345 i32.const 10 call $~lib/util/number/utoa64 - local.tee $223 + local.tee $188 i32.const 14496 call $~lib/string/String.__eq i32.eqz @@ -14759,7 +14814,7 @@ i64.const 123456 i32.const 10 call $~lib/util/number/utoa64 - local.tee $224 + local.tee $189 i32.const 14528 call $~lib/string/String.__eq i32.eqz @@ -14774,7 +14829,7 @@ i64.const 1234567 i32.const 10 call $~lib/util/number/utoa64 - local.tee $225 + local.tee $190 i32.const 14592 call $~lib/string/String.__eq i32.eqz @@ -14789,7 +14844,7 @@ i64.const 99999999 i32.const 10 call $~lib/util/number/utoa64 - local.tee $226 + local.tee $191 i32.const 16640 call $~lib/string/String.__eq i32.eqz @@ -14804,7 +14859,7 @@ i64.const 100000000 i32.const 10 call $~lib/util/number/utoa64 - local.tee $227 + local.tee $192 i32.const 16672 call $~lib/string/String.__eq i32.eqz @@ -14819,7 +14874,7 @@ i64.const 4294967295 i32.const 10 call $~lib/util/number/utoa64 - local.tee $228 + local.tee $193 i32.const 14960 call $~lib/string/String.__eq i32.eqz @@ -14834,7 +14889,7 @@ i64.const 4294967297 i32.const 10 call $~lib/util/number/utoa64 - local.tee $229 + local.tee $194 i32.const 16720 call $~lib/string/String.__eq i32.eqz @@ -14849,7 +14904,7 @@ i64.const 68719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $230 + local.tee $195 i32.const 16768 call $~lib/string/String.__eq i32.eqz @@ -14864,7 +14919,7 @@ i64.const 868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $231 + local.tee $196 i32.const 16816 call $~lib/string/String.__eq i32.eqz @@ -14879,7 +14934,7 @@ i64.const 8687194767350 i32.const 10 call $~lib/util/number/utoa64 - local.tee $232 + local.tee $197 i32.const 16864 call $~lib/string/String.__eq i32.eqz @@ -14894,7 +14949,7 @@ i64.const 86871947673501 i32.const 10 call $~lib/util/number/utoa64 - local.tee $233 + local.tee $198 i32.const 16912 call $~lib/string/String.__eq i32.eqz @@ -14909,7 +14964,7 @@ i64.const 999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $234 + local.tee $199 i32.const 16960 call $~lib/string/String.__eq i32.eqz @@ -14924,7 +14979,7 @@ i64.const 9999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $235 + local.tee $200 i32.const 17008 call $~lib/string/String.__eq i32.eqz @@ -14939,7 +14994,7 @@ i64.const 19999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $236 + local.tee $201 i32.const 17056 call $~lib/string/String.__eq i32.eqz @@ -14954,7 +15009,7 @@ i64.const 129999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $237 + local.tee $202 i32.const 17120 call $~lib/string/String.__eq i32.eqz @@ -14969,7 +15024,7 @@ i64.const 1239999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $238 + local.tee $203 i32.const 17184 call $~lib/string/String.__eq i32.eqz @@ -14984,7 +15039,7 @@ i64.const -1 i32.const 10 call $~lib/util/number/utoa64 - local.tee $239 + local.tee $204 i32.const 17248 call $~lib/string/String.__eq i32.eqz @@ -14999,7 +15054,7 @@ i64.const 0 i32.const 10 call $~lib/util/number/itoa64 - local.tee $240 + local.tee $205 i32.const 2432 call $~lib/string/String.__eq i32.eqz @@ -15014,7 +15069,7 @@ i64.const -1234 i32.const 10 call $~lib/util/number/itoa64 - local.tee $241 + local.tee $206 i32.const 17312 call $~lib/string/String.__eq i32.eqz @@ -15029,7 +15084,7 @@ i64.const 4294967295 i32.const 10 call $~lib/util/number/itoa64 - local.tee $242 + local.tee $207 i32.const 14960 call $~lib/string/String.__eq i32.eqz @@ -15044,7 +15099,7 @@ i64.const 4294967297 i32.const 10 call $~lib/util/number/itoa64 - local.tee $243 + local.tee $208 i32.const 16720 call $~lib/string/String.__eq i32.eqz @@ -15059,7 +15114,7 @@ i64.const -4294967295 i32.const 10 call $~lib/util/number/itoa64 - local.tee $244 + local.tee $209 i32.const 17344 call $~lib/string/String.__eq i32.eqz @@ -15074,7 +15129,7 @@ i64.const 68719476735 i32.const 10 call $~lib/util/number/itoa64 - local.tee $245 + local.tee $210 i32.const 16768 call $~lib/string/String.__eq i32.eqz @@ -15089,7 +15144,7 @@ i64.const -68719476735 i32.const 10 call $~lib/util/number/itoa64 - local.tee $246 + local.tee $211 i32.const 17392 call $~lib/string/String.__eq i32.eqz @@ -15104,7 +15159,7 @@ i64.const -868719476735 i32.const 10 call $~lib/util/number/itoa64 - local.tee $247 + local.tee $212 i32.const 17440 call $~lib/string/String.__eq i32.eqz @@ -15119,7 +15174,7 @@ i64.const -999868719476735 i32.const 10 call $~lib/util/number/itoa64 - local.tee $248 + local.tee $213 i32.const 17488 call $~lib/string/String.__eq i32.eqz @@ -15134,7 +15189,7 @@ i64.const -19999868719476735 i32.const 10 call $~lib/util/number/itoa64 - local.tee $249 + local.tee $214 i32.const 17536 call $~lib/string/String.__eq i32.eqz @@ -15149,7 +15204,7 @@ i64.const 9223372036854775807 i32.const 10 call $~lib/util/number/itoa64 - local.tee $250 + local.tee $215 i32.const 17600 call $~lib/string/String.__eq i32.eqz @@ -15164,7 +15219,7 @@ i64.const -9223372036854775808 i32.const 10 call $~lib/util/number/itoa64 - local.tee $251 + local.tee $216 i32.const 17664 call $~lib/string/String.__eq i32.eqz @@ -15179,7 +15234,7 @@ i64.const 0 i32.const 16 call $~lib/util/number/utoa64 - local.tee $252 + local.tee $217 i32.const 2432 call $~lib/string/String.__eq i32.eqz @@ -15194,7 +15249,7 @@ i64.const 1 i32.const 16 call $~lib/util/number/utoa64 - local.tee $253 + local.tee $218 i32.const 2496 call $~lib/string/String.__eq i32.eqz @@ -15209,7 +15264,7 @@ i64.const 12 i32.const 16 call $~lib/util/number/utoa64 - local.tee $254 + local.tee $219 i32.const 12768 call $~lib/string/String.__eq i32.eqz @@ -15224,7 +15279,7 @@ i64.const 1234 i32.const 16 call $~lib/util/number/utoa64 - local.tee $255 + local.tee $220 i32.const 15040 call $~lib/string/String.__eq i32.eqz @@ -15239,7 +15294,7 @@ i64.const 1111111 i32.const 16 call $~lib/util/number/utoa64 - local.tee $256 + local.tee $221 i32.const 15136 call $~lib/string/String.__eq i32.eqz @@ -15254,7 +15309,7 @@ i64.const 8589934591 i32.const 16 call $~lib/util/number/utoa64 - local.tee $257 + local.tee $222 i32.const 17728 call $~lib/string/String.__eq i32.eqz @@ -15269,7 +15324,7 @@ i64.const 5942249508321 i32.const 16 call $~lib/util/number/utoa64 - local.tee $258 + local.tee $223 i32.const 17776 call $~lib/string/String.__eq i32.eqz @@ -15284,7 +15339,7 @@ i64.const 76310993685985 i32.const 16 call $~lib/util/number/utoa64 - local.tee $259 + local.tee $224 i32.const 17824 call $~lib/string/String.__eq i32.eqz @@ -15299,7 +15354,7 @@ i64.const 920735923817967 i32.const 16 call $~lib/util/number/utoa64 - local.tee $260 + local.tee $225 i32.const 17872 call $~lib/string/String.__eq i32.eqz @@ -15314,7 +15369,7 @@ i64.const 9927935178558959 i32.const 16 call $~lib/util/number/utoa64 - local.tee $261 + local.tee $226 i32.const 17920 call $~lib/string/String.__eq i32.eqz @@ -15329,7 +15384,7 @@ i64.const 81985529216486895 i32.const 16 call $~lib/util/number/utoa64 - local.tee $262 + local.tee $227 i32.const 17968 call $~lib/string/String.__eq i32.eqz @@ -15344,7 +15399,7 @@ i64.const 1311768467463790320 i32.const 16 call $~lib/util/number/utoa64 - local.tee $263 + local.tee $228 i32.const 18016 call $~lib/string/String.__eq i32.eqz @@ -15359,7 +15414,7 @@ i64.const 9223372036854775807 i32.const 16 call $~lib/util/number/utoa64 - local.tee $264 + local.tee $229 i32.const 18064 call $~lib/string/String.__eq i32.eqz @@ -15374,7 +15429,7 @@ i64.const -1 i32.const 16 call $~lib/util/number/utoa64 - local.tee $265 + local.tee $230 i32.const 18112 call $~lib/string/String.__eq i32.eqz @@ -15389,7 +15444,7 @@ i64.const -9223372036854775807 i32.const 16 call $~lib/util/number/itoa64 - local.tee $266 + local.tee $231 i32.const 18160 call $~lib/string/String.__eq i32.eqz @@ -15404,7 +15459,7 @@ i64.const -9223372036854775808 i32.const 16 call $~lib/util/number/itoa64 - local.tee $267 + local.tee $232 i32.const 18224 call $~lib/string/String.__eq i32.eqz @@ -15419,7 +15474,7 @@ i64.const -9223372036854775808 i32.const 16 call $~lib/util/number/itoa64 - local.tee $268 + local.tee $233 i32.const 18224 call $~lib/string/String.__eq i32.eqz @@ -15434,7 +15489,7 @@ i64.const 0 i32.const 2 call $~lib/util/number/utoa64 - local.tee $269 + local.tee $234 i32.const 2432 call $~lib/string/String.__eq i32.eqz @@ -15449,7 +15504,7 @@ i64.const 1 i32.const 2 call $~lib/util/number/utoa64 - local.tee $270 + local.tee $235 i32.const 2496 call $~lib/string/String.__eq i32.eqz @@ -15464,7 +15519,7 @@ i64.const 7 i32.const 2 call $~lib/util/number/utoa64 - local.tee $271 + local.tee $236 i32.const 15552 call $~lib/string/String.__eq i32.eqz @@ -15479,7 +15534,7 @@ i64.const 14 i32.const 2 call $~lib/util/number/utoa64 - local.tee $272 + local.tee $237 i32.const 15584 call $~lib/string/String.__eq i32.eqz @@ -15494,7 +15549,7 @@ i64.const 59 i32.const 2 call $~lib/util/number/utoa64 - local.tee $273 + local.tee $238 i32.const 15648 call $~lib/string/String.__eq i32.eqz @@ -15509,7 +15564,7 @@ i64.const 4095 i32.const 2 call $~lib/util/number/utoa64 - local.tee $274 + local.tee $239 i32.const 15680 call $~lib/string/String.__eq i32.eqz @@ -15524,7 +15579,7 @@ i64.const 4294967295 i32.const 2 call $~lib/util/number/utoa64 - local.tee $275 + local.tee $240 i32.const 16048 call $~lib/string/String.__eq i32.eqz @@ -15539,7 +15594,7 @@ i64.const 562949953421311 i32.const 2 call $~lib/util/number/utoa64 - local.tee $276 + local.tee $241 i32.const 18288 call $~lib/string/String.__eq i32.eqz @@ -15554,7 +15609,7 @@ i64.const -1 i32.const 2 call $~lib/util/number/utoa64 - local.tee $277 + local.tee $242 i32.const 18416 call $~lib/string/String.__eq i32.eqz @@ -15569,7 +15624,7 @@ i64.const -8589934591 i32.const 2 call $~lib/util/number/itoa64 - local.tee $278 + local.tee $243 i32.const 18560 call $~lib/string/String.__eq i32.eqz @@ -15584,7 +15639,7 @@ i64.const -1 i32.const 3 call $~lib/util/number/utoa64 - local.tee $279 + local.tee $244 i32.const 18656 call $~lib/string/String.__eq i32.eqz @@ -15599,7 +15654,7 @@ i64.const -1 i32.const 4 call $~lib/util/number/utoa64 - local.tee $280 + local.tee $245 i32.const 18768 call $~lib/string/String.__eq i32.eqz @@ -15614,7 +15669,7 @@ i64.const -1 i32.const 5 call $~lib/util/number/utoa64 - local.tee $281 + local.tee $246 i32.const 18848 call $~lib/string/String.__eq i32.eqz @@ -15629,7 +15684,7 @@ i64.const -1 i32.const 8 call $~lib/util/number/utoa64 - local.tee $282 + local.tee $247 i32.const 18928 call $~lib/string/String.__eq i32.eqz @@ -15644,7 +15699,7 @@ i64.const -1 i32.const 11 call $~lib/util/number/utoa64 - local.tee $283 + local.tee $248 i32.const 18992 call $~lib/string/String.__eq i32.eqz @@ -15659,7 +15714,7 @@ i64.const -1 i32.const 15 call $~lib/util/number/utoa64 - local.tee $284 + local.tee $249 i32.const 19056 call $~lib/string/String.__eq i32.eqz @@ -15674,7 +15729,7 @@ i64.const -1 i32.const 17 call $~lib/util/number/utoa64 - local.tee $285 + local.tee $250 i32.const 19120 call $~lib/string/String.__eq i32.eqz @@ -15689,7 +15744,7 @@ i64.const -1 i32.const 21 call $~lib/util/number/utoa64 - local.tee $286 + local.tee $251 i32.const 19168 call $~lib/string/String.__eq i32.eqz @@ -15704,7 +15759,7 @@ i64.const -1 i32.const 27 call $~lib/util/number/utoa64 - local.tee $287 + local.tee $252 i32.const 19216 call $~lib/string/String.__eq i32.eqz @@ -15719,7 +15774,7 @@ i64.const -1 i32.const 32 call $~lib/util/number/utoa64 - local.tee $288 + local.tee $253 i32.const 19264 call $~lib/string/String.__eq i32.eqz @@ -15734,7 +15789,7 @@ i64.const -1 i32.const 36 call $~lib/util/number/utoa64 - local.tee $289 + local.tee $254 i32.const 19312 call $~lib/string/String.__eq i32.eqz @@ -15748,7 +15803,7 @@ end f64.const 0 call $~lib/util/number/dtoa - local.tee $290 + local.tee $255 i32.const 19360 call $~lib/string/String.__eq i32.eqz @@ -15762,7 +15817,7 @@ end f64.const -0 call $~lib/util/number/dtoa - local.tee $291 + local.tee $256 i32.const 19360 call $~lib/string/String.__eq i32.eqz @@ -15776,7 +15831,7 @@ end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - local.tee $292 + local.tee $257 i32.const 6336 call $~lib/string/String.__eq i32.eqz @@ -15790,7 +15845,7 @@ end f64.const inf call $~lib/util/number/dtoa - local.tee $293 + local.tee $258 i32.const 19392 call $~lib/string/String.__eq i32.eqz @@ -15804,7 +15859,7 @@ end f64.const -inf call $~lib/util/number/dtoa - local.tee $294 + local.tee $259 i32.const 7552 call $~lib/string/String.__eq i32.eqz @@ -15818,7 +15873,7 @@ end f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $295 + local.tee $260 i32.const 6848 call $~lib/string/String.__eq i32.eqz @@ -15832,7 +15887,7 @@ end f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $296 + local.tee $261 i32.const 20336 call $~lib/string/String.__eq i32.eqz @@ -15846,7 +15901,7 @@ end f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $297 + local.tee $262 i32.const 6912 call $~lib/string/String.__eq i32.eqz @@ -15860,7 +15915,7 @@ end f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $298 + local.tee $263 i32.const 20400 call $~lib/string/String.__eq i32.eqz @@ -15874,7 +15929,7 @@ end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - local.tee $299 + local.tee $264 i32.const 20464 call $~lib/string/String.__eq i32.eqz @@ -15888,7 +15943,7 @@ end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - local.tee $12 + local.tee $265 i32.const 20528 call $~lib/string/String.__eq i32.eqz @@ -15902,7 +15957,7 @@ end f64.const 4.940656e-318 call $~lib/util/number/dtoa - local.tee $3 + local.tee $266 i32.const 20592 call $~lib/string/String.__eq i32.eqz @@ -15916,7 +15971,7 @@ end f64.const 9060801153433600 call $~lib/util/number/dtoa - local.tee $9 + local.tee $267 i32.const 20640 call $~lib/string/String.__eq i32.eqz @@ -15930,7 +15985,7 @@ end f64.const 4708356024711512064 call $~lib/util/number/dtoa - local.tee $10 + local.tee $268 i32.const 20704 call $~lib/string/String.__eq i32.eqz @@ -15944,7 +15999,7 @@ end f64.const 9409340012568248320 call $~lib/util/number/dtoa - local.tee $13 + local.tee $269 i32.const 20768 call $~lib/string/String.__eq i32.eqz @@ -15958,7 +16013,7 @@ end f64.const 5e-324 call $~lib/util/number/dtoa - local.tee $6 + local.tee $270 i32.const 6976 call $~lib/string/String.__eq i32.eqz @@ -15972,7 +16027,7 @@ end f64.const 1 call $~lib/util/number/dtoa - local.tee $14 + local.tee $271 i32.const 20832 call $~lib/string/String.__eq i32.eqz @@ -15986,7 +16041,7 @@ end f64.const 0.1 call $~lib/util/number/dtoa - local.tee $15 + local.tee $272 i32.const 4112 call $~lib/string/String.__eq i32.eqz @@ -16000,7 +16055,7 @@ end f64.const -1 call $~lib/util/number/dtoa - local.tee $16 + local.tee $273 i32.const 20864 call $~lib/string/String.__eq i32.eqz @@ -16014,7 +16069,7 @@ end f64.const -0.1 call $~lib/util/number/dtoa - local.tee $17 + local.tee $274 i32.const 20896 call $~lib/string/String.__eq i32.eqz @@ -16028,7 +16083,7 @@ end f64.const 1e6 call $~lib/util/number/dtoa - local.tee $18 + local.tee $275 i32.const 20928 call $~lib/string/String.__eq i32.eqz @@ -16042,7 +16097,7 @@ end f64.const 1e-06 call $~lib/util/number/dtoa - local.tee $4 + local.tee $276 i32.const 20976 call $~lib/string/String.__eq i32.eqz @@ -16056,7 +16111,7 @@ end f64.const -1e6 call $~lib/util/number/dtoa - local.tee $19 + local.tee $277 i32.const 21008 call $~lib/string/String.__eq i32.eqz @@ -16070,7 +16125,7 @@ end f64.const -1e-06 call $~lib/util/number/dtoa - local.tee $20 + local.tee $278 i32.const 21056 call $~lib/string/String.__eq i32.eqz @@ -16084,7 +16139,7 @@ end f64.const 1e7 call $~lib/util/number/dtoa - local.tee $21 + local.tee $279 i32.const 21104 call $~lib/string/String.__eq i32.eqz @@ -16098,7 +16153,7 @@ end f64.const 1e-07 call $~lib/util/number/dtoa - local.tee $22 + local.tee $280 i32.const 21152 call $~lib/string/String.__eq i32.eqz @@ -16112,7 +16167,7 @@ end f64.const 1.e+308 call $~lib/util/number/dtoa - local.tee $23 + local.tee $281 i32.const 4336 call $~lib/string/String.__eq i32.eqz @@ -16126,7 +16181,7 @@ end f64.const -1.e+308 call $~lib/util/number/dtoa - local.tee $24 + local.tee $282 i32.const 21184 call $~lib/string/String.__eq i32.eqz @@ -16140,7 +16195,7 @@ end f64.const inf call $~lib/util/number/dtoa - local.tee $25 + local.tee $283 i32.const 19392 call $~lib/string/String.__eq i32.eqz @@ -16154,7 +16209,7 @@ end f64.const -inf call $~lib/util/number/dtoa - local.tee $5 + local.tee $284 i32.const 7552 call $~lib/string/String.__eq i32.eqz @@ -16168,7 +16223,7 @@ end f64.const 1e-308 call $~lib/util/number/dtoa - local.tee $26 + local.tee $285 i32.const 21216 call $~lib/string/String.__eq i32.eqz @@ -16182,7 +16237,7 @@ end f64.const -1e-308 call $~lib/util/number/dtoa - local.tee $27 + local.tee $286 i32.const 21248 call $~lib/string/String.__eq i32.eqz @@ -16196,7 +16251,7 @@ end f64.const 1e-323 call $~lib/util/number/dtoa - local.tee $28 + local.tee $287 i32.const 21280 call $~lib/string/String.__eq i32.eqz @@ -16210,7 +16265,7 @@ end f64.const -1e-323 call $~lib/util/number/dtoa - local.tee $29 + local.tee $288 i32.const 21312 call $~lib/string/String.__eq i32.eqz @@ -16224,7 +16279,7 @@ end f64.const 0 call $~lib/util/number/dtoa - local.tee $30 + local.tee $289 i32.const 19360 call $~lib/string/String.__eq i32.eqz @@ -16238,7 +16293,7 @@ end f64.const 4294967272 call $~lib/util/number/dtoa - local.tee $31 + local.tee $290 i32.const 21344 call $~lib/string/String.__eq i32.eqz @@ -16252,7 +16307,7 @@ end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - local.tee $11 + local.tee $291 i32.const 21392 call $~lib/string/String.__eq i32.eqz @@ -16266,7 +16321,7 @@ end f64.const 555555555.5555556 call $~lib/util/number/dtoa - local.tee $32 + local.tee $292 i32.const 21456 call $~lib/string/String.__eq i32.eqz @@ -16280,7 +16335,7 @@ end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - local.tee $7 + local.tee $293 i32.const 21520 call $~lib/string/String.__eq i32.eqz @@ -16294,7 +16349,7 @@ end f64.const 1 call $~lib/util/number/dtoa - local.tee $33 + local.tee $294 i32.const 20832 call $~lib/string/String.__eq i32.eqz @@ -16308,7 +16363,7 @@ end f64.const 12.34 call $~lib/util/number/dtoa - local.tee $34 + local.tee $295 i32.const 21584 call $~lib/string/String.__eq i32.eqz @@ -16322,7 +16377,7 @@ end f64.const 0.3333333333333333 call $~lib/util/number/dtoa - local.tee $8 + local.tee $296 i32.const 21616 call $~lib/string/String.__eq i32.eqz @@ -16336,7 +16391,7 @@ end f64.const 1234e17 call $~lib/util/number/dtoa - local.tee $35 + local.tee $297 i32.const 21680 call $~lib/string/String.__eq i32.eqz @@ -16350,7 +16405,7 @@ end f64.const 1234e18 call $~lib/util/number/dtoa - local.tee $36 + local.tee $298 i32.const 21744 call $~lib/string/String.__eq i32.eqz @@ -16364,7 +16419,7 @@ end f64.const 2.71828 call $~lib/util/number/dtoa - local.tee $37 + local.tee $299 i32.const 21792 call $~lib/string/String.__eq i32.eqz @@ -16378,7 +16433,7 @@ end f64.const 0.0271828 call $~lib/util/number/dtoa - local.tee $38 + local.tee $5 i32.const 21824 call $~lib/string/String.__eq i32.eqz @@ -16392,7 +16447,7 @@ end f64.const 271.828 call $~lib/util/number/dtoa - local.tee $39 + local.tee $2 i32.const 21872 call $~lib/string/String.__eq i32.eqz @@ -16406,7 +16461,7 @@ end f64.const 1.1e+128 call $~lib/util/number/dtoa - local.tee $40 + local.tee $4 i32.const 21904 call $~lib/string/String.__eq i32.eqz @@ -16448,19 +16503,87 @@ end global.get $std/string/str call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $20 + call $~lib/rt/pure/__release + local.get $21 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release + local.get $27 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $30 + call $~lib/rt/pure/__release + local.get $31 + call $~lib/rt/pure/__release + local.get $32 + call $~lib/rt/pure/__release + local.get $33 + call $~lib/rt/pure/__release + local.get $34 + call $~lib/rt/pure/__release + local.get $35 + call $~lib/rt/pure/__release + local.get $36 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release local.get $42 call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release - local.get $44 + local.get $47 call $~lib/rt/pure/__release - local.get $45 + local.get $48 call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release - local.get $47 + local.get $45 call $~lib/rt/pure/__release - local.get $48 + local.get $44 call $~lib/rt/pure/__release local.get $49 call $~lib/rt/pure/__release @@ -16512,6 +16635,8 @@ call $~lib/rt/pure/__release local.get $73 call $~lib/rt/pure/__release + local.get $74 + call $~lib/rt/pure/__release local.get $75 call $~lib/rt/pure/__release local.get $76 @@ -16520,15 +16645,15 @@ call $~lib/rt/pure/__release local.get $78 call $~lib/rt/pure/__release - local.get $82 + local.get $79 call $~lib/rt/pure/__release - local.get $83 + local.get $80 call $~lib/rt/pure/__release local.get $81 call $~lib/rt/pure/__release - local.get $80 + local.get $82 call $~lib/rt/pure/__release - local.get $79 + local.get $83 call $~lib/rt/pure/__release local.get $84 call $~lib/rt/pure/__release @@ -16592,10 +16717,10 @@ call $~lib/rt/pure/__release local.get $114 call $~lib/rt/pure/__release - local.get $115 - call $~lib/rt/pure/__release local.get $116 call $~lib/rt/pure/__release + local.get $115 + call $~lib/rt/pure/__release local.get $117 call $~lib/rt/pure/__release local.get $118 @@ -16662,10 +16787,10 @@ call $~lib/rt/pure/__release local.get $149 call $~lib/rt/pure/__release - local.get $151 - call $~lib/rt/pure/__release local.get $150 call $~lib/rt/pure/__release + local.get $151 + call $~lib/rt/pure/__release local.get $152 call $~lib/rt/pure/__release local.get $153 @@ -16962,81 +17087,11 @@ call $~lib/rt/pure/__release local.get $299 call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 + local.get $2 call $~lib/rt/pure/__release - local.get $40 + local.get $4 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index edee9d2672..35c2d5f686 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1364,14 +1364,11 @@ block $case3|0 block $case2|0 block $case1|0 - local.get $0 - i32.const 1 - i32.ne - if + block $case0|0 local.get $0 - i32.const 2 + i32.const 1 i32.sub - br_table $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 end i32.const 1408 br $break|0 @@ -1428,6 +1425,7 @@ ) (func $start:std/symbol (local $0 i32) + (local $1 i32) call $~lib/symbol/Symbol global.set $std/symbol/sym1 call $~lib/symbol/Symbol @@ -1487,6 +1485,7 @@ global.get $std/symbol/sym3 call $~lib/symbol/_Symbol.keyFor local.tee $0 + local.get $0 i32.eqz if i32.const 1344 @@ -1496,11 +1495,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 global.set $std/symbol/key3 global.get $std/symbol/sym4 call $~lib/symbol/_Symbol.keyFor local.tee $0 + local.get $0 i32.eqz if i32.const 1344 @@ -1510,7 +1509,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 global.set $std/symbol/key4 global.get $std/symbol/key3 i32.const 1040 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 8b92f0d440..3d7a75457b 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -363,15 +363,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -395,23 +393,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -426,25 +424,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -456,24 +454,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -482,7 +480,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -492,7 +490,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -646,15 +644,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -902,16 +898,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -923,18 +919,19 @@ unreachable end i32.const 12528 - local.tee $0 + local.set $1 + i32.const 12528 i32.const 0 i32.store i32.const 14096 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 12528 @@ -948,10 +945,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -966,10 +963,10 @@ 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 @@ -982,7 +979,7 @@ i32.const 12528 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) local.get $0 @@ -1019,6 +1016,7 @@ i32.shr_u local.set $1 else + i32.const 31 local.get $1 i32.const 1 i32.const 27 @@ -1035,11 +1033,11 @@ i32.lt_u select local.tee $1 - i32.const 31 - local.get $1 i32.clz i32.sub - local.tee $2 + local.set $2 + local.get $1 + local.get $2 i32.const 4 i32.sub i32.shr_u @@ -5590,10 +5588,10 @@ local.get $6 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $4 local.get $5 i32.const 3 i32.and - local.get $4 i32.or i32.store local.get $1 @@ -7851,23 +7849,22 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -7890,7 +7887,6 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $2 @@ -7904,10 +7900,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -7921,23 +7917,22 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -7960,7 +7955,6 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $2 @@ -7974,10 +7968,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -7992,25 +7986,24 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -8035,7 +8028,6 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $2 @@ -8049,10 +8041,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -8066,25 +8058,24 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -8109,7 +8100,6 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $2 @@ -8123,10 +8113,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -8139,25 +8129,24 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -8182,7 +8171,6 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $2 @@ -8196,10 +8184,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -8216,25 +8204,24 @@ (local $4 i32) (local $5 i32) (local $6 i64) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - 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 $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + 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 $5 loop $for-loop|0 local.get $2 local.get $5 @@ -8259,7 +8246,6 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $2 @@ -8273,10 +8259,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -8293,25 +8279,24 @@ (local $4 i32) (local $5 i32) (local $6 f32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -8336,7 +8321,6 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $2 @@ -8350,10 +8334,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -8371,25 +8355,24 @@ (local $4 i32) (local $5 i32) (local $6 f64) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - 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 $5 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + 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 $5 loop $for-loop|0 local.get $2 local.get $5 @@ -8414,7 +8397,6 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $2 @@ -8428,10 +8410,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -9021,23 +9003,22 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -9060,6 +9041,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $2 @@ -9074,11 +9056,9 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -9092,23 +9072,22 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -9131,6 +9110,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $2 @@ -9145,11 +9125,9 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 @@ -9172,25 +9150,24 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -9215,6 +9192,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $2 @@ -9229,11 +9207,9 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -9241,25 +9217,24 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -9284,6 +9259,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $2 @@ -9298,11 +9274,9 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 @@ -9321,25 +9295,24 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -9364,6 +9337,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $2 @@ -9378,11 +9352,9 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 @@ -9401,25 +9373,24 @@ (local $4 i32) (local $5 i32) (local $6 i64) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - 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 $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + 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 $5 loop $for-loop|0 local.get $2 local.get $5 @@ -9444,6 +9415,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $2 @@ -9458,11 +9430,9 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -9478,6 +9448,10 @@ local.get $0 i32.reinterpret_f32 local.tee $1 + i32.const -2147483648 + i32.and + local.set $4 + local.get $1 i32.const 23 i32.shr_u i32.const 255 @@ -9494,10 +9468,6 @@ f32.div return end - local.get $1 - i32.const -2147483648 - i32.and - local.set $4 block $folding-inner0 local.get $1 i32.const 1 @@ -9631,25 +9601,24 @@ (local $4 i32) (local $5 i32) (local $6 f32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $5 loop $for-loop|0 local.get $2 local.get $5 @@ -9674,6 +9643,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $2 @@ -9688,11 +9658,9 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $~lib/math/NativeMath.mod (param $0 f64) (result f64) (local $1 i64) @@ -9702,6 +9670,10 @@ local.get $0 i64.reinterpret_f64 local.tee $1 + i64.const 63 + i64.shr_u + local.set $4 + local.get $1 i64.const 52 i64.shr_u i64.const 2047 @@ -9718,10 +9690,6 @@ f64.div return end - local.get $1 - i64.const 63 - i64.shr_u - local.set $4 block $folding-inner0 local.get $1 i64.const 1 @@ -9862,25 +9830,24 @@ (local $4 i32) (local $5 i32) (local $6 f64) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - 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 $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__retain + local.set $1 + 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 $5 loop $for-loop|0 local.get $2 local.get $5 @@ -9905,6 +9872,7 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $2 @@ -9919,11 +9887,9 @@ local.get $0 call $~lib/rt/pure/__release i32.const 1 - local.set $7 end local.get $3 call $~lib/rt/pure/__release - local.get $7 ) (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 @@ -13087,18 +13053,16 @@ (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $2 local.get $0 call $~lib/rt/pure/__retain local.tee $0 i32.load offset=8 local.tee $3 - if (result i32) - local.get $2 - local.get $3 - i32.ge_s - else - i32.const 1 - end + i32.ge_s + i32.const 1 + local.get $3 + select if local.get $0 call $~lib/rt/pure/__release @@ -14517,6 +14481,7 @@ (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $2 local.get $0 call $~lib/rt/pure/__retain local.tee $0 @@ -14524,13 +14489,10 @@ i32.const 1 i32.shr_u local.tee $3 - if (result i32) - local.get $2 - local.get $3 - i32.ge_s - else - i32.const 1 - end + i32.ge_s + i32.const 1 + local.get $3 + select if local.get $0 call $~lib/rt/pure/__release @@ -15534,6 +15496,7 @@ (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $2 local.get $0 call $~lib/rt/pure/__retain local.tee $0 @@ -15541,13 +15504,10 @@ i32.const 2 i32.shr_u local.tee $3 - if (result i32) - local.get $2 - local.get $3 - i32.ge_s - else - i32.const 1 - end + i32.ge_s + i32.const 1 + local.get $3 + select if local.get $0 call $~lib/rt/pure/__release @@ -16542,6 +16502,7 @@ (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $2 local.get $0 call $~lib/rt/pure/__retain local.tee $0 @@ -16549,13 +16510,10 @@ i32.const 3 i32.shr_u local.tee $3 - if (result i32) - local.get $2 - local.get $3 - i32.ge_s - else - i32.const 1 - end + i32.ge_s + i32.const 1 + local.get $3 + select if local.get $0 call $~lib/rt/pure/__release @@ -17551,6 +17509,7 @@ (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $2 local.get $0 call $~lib/rt/pure/__retain local.tee $0 @@ -17558,13 +17517,10 @@ i32.const 2 i32.shr_u local.tee $3 - if (result i32) - local.get $2 - local.get $3 - i32.ge_s - else - i32.const 1 - end + i32.ge_s + i32.const 1 + local.get $3 + select if local.get $0 call $~lib/rt/pure/__release @@ -18139,6 +18095,7 @@ (local $3 i32) (local $4 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $2 local.get $0 call $~lib/rt/pure/__retain local.tee $0 @@ -18146,13 +18103,10 @@ i32.const 3 i32.shr_u local.tee $3 - if (result i32) - local.get $2 - local.get $3 - i32.ge_s - else - i32.const 1 - end + i32.ge_s + i32.const 1 + local.get $3 + select if local.get $0 call $~lib/rt/pure/__release @@ -20214,10 +20168,10 @@ i64.const 10 i64.lt_u if + local.get $0 local.get $2 i32.const 1 i32.shl - local.get $0 i32.add local.get $1 i64.const 48 @@ -20232,16 +20186,16 @@ i64.const 4294967295 i64.le_u if - local.get $2 local.get $1 i32.wrap_i64 - local.tee $2 + local.tee $3 call $~lib/util/number/decimalCount32 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $0 - local.get $2 local.get $3 + local.get $2 call $~lib/util/number/utoa_dec_simple else local.get $0 @@ -20250,10 +20204,10 @@ call $~lib/util/number/decimalCount64High local.get $2 i32.add - local.tee $3 + local.tee $2 call $~lib/util/number/utoa_dec_simple end - local.get $3 + local.get $2 ) (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -20663,41 +20617,41 @@ call $~lib/rt/pure/__release ) (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) - (local $7 i32) + (local $7 i64) (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) (local $12 i64) (local $13 i64) local.get $3 local.get $1 i64.sub - local.set $9 + local.set $8 local.get $3 i64.const 1 i32.const 0 local.get $4 i32.sub - local.tee $10 + local.tee $11 i64.extend_i32_s i64.shl - local.tee $11 + local.tee $10 i64.const 1 i64.sub local.tee $12 i64.and - local.set $8 + local.set $7 local.get $3 - local.get $10 + local.get $11 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $4 + local.set $9 loop $while-continue|0 - local.get $4 + local.get $9 i32.const 0 i32.gt_s if @@ -20712,116 +20666,112 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 - local.tee $2 - i32.const 10 - i32.ne - if - local.get $2 + block $case0|1 + 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 $case10|1 + 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 $7 + local.get $2 i32.const 1000000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 - local.set $2 + local.get $2 + local.set $4 i32.const 0 - local.set $7 + local.set $2 br $break|1 end i32.const 0 - local.set $2 + local.set $4 end - local.get $2 + local.get $4 local.get $6 i32.or if @@ -20830,7 +20780,7 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $4 i32.const 65535 i32.and i32.const 48 @@ -20841,14 +20791,14 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 - local.get $8 + local.set $9 local.get $7 + local.get $2 i64.extend_i32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl i64.add @@ -20856,20 +20806,20 @@ local.get $5 i64.le_u if - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $4 + local.get $9 i32.const 2 i32.shl i32.const 8248 i32.add i64.load32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl - local.set $3 + local.set $10 local.get $0 local.get $6 i32.const 1 @@ -20877,52 +20827,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|3 i32.const 1 - local.get $9 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $3 + local.get $10 i64.add - local.get $9 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 local.get $3 - i64.add - local.get $9 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $3 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $9 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $3 + local.get $10 i64.add local.set $1 br $while-continue|3 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 return @@ -20930,7 +20879,7 @@ br $while-continue|0 end end - local.get $10 + local.get $11 i64.extend_i32_s local.set $13 loop $while-continue|4 (result i32) @@ -20938,7 +20887,7 @@ i64.const 10 i64.mul local.set $5 - local.get $8 + local.get $7 i64.const 10 i64.mul local.tee $3 @@ -20968,26 +20917,26 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 + local.set $9 local.get $3 local.get $12 i64.and - local.tee $8 + local.tee $7 local.get $5 i64.ge_u br_if $while-continue|4 - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 local.set $1 - local.get $9 + local.get $8 i32.const 0 - local.get $4 + local.get $9 i32.sub i32.const 2 i32.shl @@ -20995,7 +20944,7 @@ i32.add i64.load32_u i64.mul - local.set $3 + local.set $8 local.get $0 local.get $6 i32.const 1 @@ -21003,52 +20952,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|6 i32.const 1 - local.get $3 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $11 + local.get $10 i64.add - local.get $3 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 - local.get $11 - i64.add local.get $3 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $11 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $3 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $11 + local.get $10 i64.add local.set $1 br $while-continue|6 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 end @@ -21071,18 +21019,16 @@ return end local.get $1 - local.get $1 local.get $2 i32.add local.tee $3 + i32.const 21 i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end + i32.const 0 + local.get $1 + local.get $3 + i32.le_s + select if (result i32) loop $for-loop|0 local.get $1 @@ -21303,15 +21249,15 @@ (local $3 i64) (local $4 i32) (local $5 i64) - (local $6 i32) + (local $6 i64) (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) local.get $1 f64.const 0 f64.lt - local.tee $8 + local.tee $9 if (result f64) local.get $0 i32.const 45 @@ -21322,60 +21268,60 @@ local.get $1 end i64.reinterpret_f64 - local.tee $3 + local.tee $2 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $3 + local.get $2 i64.const 4503599627370495 i64.and i64.add - local.tee $2 + local.tee $3 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i64.clz i32.wrap_i64 local.tee $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $6 + local.get $8 i32.const 1 - local.get $6 + local.get $8 select i32.const 1075 i32.sub - local.tee $6 + local.tee $8 i32.const 1 i32.sub local.get $4 i32.sub local.set $4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $9 + local.tee $10 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $6 - local.get $9 + local.get $8 + local.get $10 i32.sub local.get $4 i32.sub @@ -21408,10 +21354,10 @@ local.tee $4 i32.const 3 i32.shl - local.tee $9 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $9 + local.get $10 i32.const 7376 i32.add i64.load @@ -21424,52 +21370,40 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $6 i64.const 4294967295 i64.and - local.set $5 - local.get $0 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $2 + local.set $2 + local.get $6 i64.const 32 i64.shr_u - local.tee $7 - local.get $3 + local.tee $6 + global.get $~lib/util/number/_frc_plus + local.tee $5 i64.const 32 i64.shr_u - local.tee $10 + local.tee $7 i64.mul - local.get $5 + local.get $2 local.get $7 i64.mul local.get $2 + local.get $5 i64.const 4294967295 i64.and - local.tee $2 - local.get $5 + local.tee $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $10 - i64.mul local.get $5 + local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and i64.add @@ -21478,47 +21412,48 @@ i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $6 + i64.const 1 + i64.sub + local.set $5 local.get $0 - i32.sub + local.get $9 + i32.const 1 + i32.shl i32.add - i32.const -64 - i32.sub - global.get $~lib/util/number/_frc_plus - local.tee $2 - i64.const 32 - i64.shr_u - local.tee $5 + 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.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $10 - local.get $5 + local.get $2 + local.get $7 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and - local.tee $2 - local.get $10 + local.tee $3 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $7 + local.get $3 + local.get $6 i64.mul - local.get $5 + local.get $7 i64.const 4294967295 i64.and i64.add @@ -21527,36 +21462,36 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $2 + global.get $~lib/util/number/_exp_pow + local.tee $4 + local.get $8 + local.get $0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $5 local.get $4 global.get $~lib/util/number/_exp i32.add i32.const -64 i32.sub - local.get $2 + local.get $5 + local.get $6 global.get $~lib/util/number/_frc_minus - local.tee $2 + local.tee $3 i64.const 32 i64.shr_u local.tee $5 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 + local.get $2 local.get $5 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and local.tee $2 - local.get $3 i64.mul i64.const 32 i64.shr_u @@ -21566,7 +21501,7 @@ i64.shr_u i64.add local.get $2 - local.get $7 + local.get $6 i64.mul local.get $3 i64.const 4294967295 @@ -21580,13 +21515,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $9 call $~lib/util/number/genDigits - local.get $8 + local.get $9 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $9 i32.add ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) @@ -22191,20 +22126,19 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Int8Array#constructor - local.tee $6 + local.tee $5 call $~lib/rt/pure/__retain - local.set $1 + local.set $2 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if - local.get $1 + local.get $2 local.get $0 i32.const 8432 local.get $0 @@ -22221,31 +22155,31 @@ br $for-loop|0 end end - local.get $1 + local.get $2 i32.load - local.get $1 + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 + local.get $2 i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $0 - local.set $8 + local.tee $1 + local.set $7 i32.const 0 - local.get $0 + local.get $1 i32.gt_u if i32.const 1376 @@ -22258,33 +22192,35 @@ i32.const 12 i32.const 3 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $1 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $8 + local.get $1 + local.get $7 i32.store offset=8 + local.get $1 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $1 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $1 + local.get $0 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 local.get $2 + local.get $0 call $~lib/typedarray/Int8Array#__get + local.get $1 local.get $0 - local.get $2 call $~lib/typedarray/Int8Array#__get i32.ne if @@ -22295,22 +22231,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $6 + local.get $5 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> @@ -22322,58 +22258,60 @@ (local $5 i32) i32.const 8444 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Uint8Array#constructor local.tee $5 call $~lib/rt/pure/__retain - local.set $0 + local.set $1 loop $for-loop|0 - local.get $1 - local.get $3 + local.get $0 + local.get $2 i32.lt_s if - local.get $0 local.get $1 + local.get $0 i32.const 8432 - 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 - local.get $0 + local.get $1 i32.load - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $0 + local.get $1 i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $1 + local.set $3 i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $3 i32.const 0 call $~lib/typedarray/Uint8Array.wrap@varargs local.set $4 + i32.const 0 + local.set $0 loop $for-loop|1 + local.get $0 local.get $2 - local.get $3 i32.lt_s if + local.get $1 local.get $0 - local.get $2 call $~lib/typedarray/Uint8Array#__get local.get $4 - local.get $2 + local.get $0 call $~lib/typedarray/Uint8Array#__get i32.ne if @@ -22384,10 +22322,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end @@ -22395,10 +22333,10 @@ call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release ) @@ -22411,20 +22349,19 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $6 + local.tee $5 call $~lib/rt/pure/__retain - local.set $1 + local.set $2 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if - local.get $1 + local.get $2 local.get $0 i32.const 8432 local.get $0 @@ -22439,31 +22376,31 @@ br $for-loop|0 end end - local.get $1 + local.get $2 i32.load - local.get $1 + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 + local.get $2 i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $0 - local.set $8 + local.tee $1 + local.set $7 i32.const 0 - local.get $0 + local.get $1 i32.gt_u if i32.const 1376 @@ -22476,33 +22413,35 @@ i32.const 12 i32.const 5 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $1 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $8 + local.get $1 + local.get $7 i32.store offset=8 + local.get $1 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $1 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $1 + local.get $0 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 local.get $2 + local.get $0 call $~lib/typedarray/Uint8ClampedArray#__get + local.get $1 local.get $0 - local.get $2 call $~lib/typedarray/Uint8ClampedArray#__get i32.ne if @@ -22513,22 +22452,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $6 + local.get $5 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> @@ -22540,17 +22479,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Int16Array#constructor - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -22580,19 +22518,19 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength i32.const 0 - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $8 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $6 + local.tee $5 i32.gt_u if i32.const 1376 @@ -22602,7 +22540,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 1 i32.and if @@ -22616,33 +22554,35 @@ i32.const 12 i32.const 6 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $2 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $6 + local.get $2 + local.get $5 i32.store offset=8 + local.get $2 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#__get local.get $0 + call $~lib/typedarray/Int16Array#__get local.get $2 + local.get $0 call $~lib/typedarray/Int16Array#__get i32.ne if @@ -22653,22 +22593,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $7 + local.get $6 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> @@ -22680,17 +22620,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Uint16Array#constructor - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -22718,19 +22657,19 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength i32.const 0 - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $8 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $6 + local.tee $5 i32.gt_u if i32.const 1376 @@ -22740,7 +22679,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 1 i32.and if @@ -22754,33 +22693,35 @@ i32.const 12 i32.const 7 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $2 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $6 + local.get $2 + local.get $5 i32.store offset=8 + local.get $2 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if local.get $1 - local.get $2 - call $~lib/typedarray/Uint16Array#__get local.get $0 + call $~lib/typedarray/Uint16Array#__get local.get $2 + local.get $0 call $~lib/typedarray/Uint16Array#__get i32.ne if @@ -22791,22 +22732,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $7 + local.get $6 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> @@ -22818,17 +22759,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Int32Array#constructor - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -22854,19 +22794,19 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength i32.const 0 - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $8 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $6 + local.tee $5 i32.gt_u if i32.const 1376 @@ -22876,7 +22816,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 3 i32.and if @@ -22890,33 +22830,35 @@ i32.const 12 i32.const 8 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $2 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $6 + local.get $2 + local.get $5 i32.store offset=8 + local.get $2 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#__get local.get $0 + call $~lib/typedarray/Int32Array#__get local.get $2 + local.get $0 call $~lib/typedarray/Int32Array#__get i32.ne if @@ -22927,22 +22869,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $7 + local.get $6 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> @@ -22954,17 +22896,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Uint32Array#constructor - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -22990,19 +22931,19 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength i32.const 0 - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $8 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $6 + local.tee $5 i32.gt_u if i32.const 1376 @@ -23012,7 +22953,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 3 i32.and if @@ -23026,33 +22967,35 @@ i32.const 12 i32.const 9 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $2 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $6 + local.get $2 + local.get $5 i32.store offset=8 + local.get $2 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#__get local.get $0 + call $~lib/typedarray/Uint32Array#__get local.get $2 + local.get $0 call $~lib/typedarray/Uint32Array#__get i32.ne if @@ -23063,22 +23006,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $7 + local.get $6 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> @@ -23090,17 +23033,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Int64Array#constructor - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -23127,19 +23069,19 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength i32.const 0 - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $8 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $6 + local.tee $5 i32.gt_u if i32.const 1376 @@ -23149,7 +23091,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 7 i32.and if @@ -23163,33 +23105,35 @@ i32.const 12 i32.const 10 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $2 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $6 + local.get $2 + local.get $5 i32.store offset=8 + local.get $2 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#__get local.get $0 + call $~lib/typedarray/Int64Array#__get local.get $2 + local.get $0 call $~lib/typedarray/Int64Array#__get i64.ne if @@ -23200,22 +23144,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $7 + local.get $6 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> @@ -23227,17 +23171,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Uint64Array#constructor - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -23264,19 +23207,19 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength i32.const 0 - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $8 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $6 + local.tee $5 i32.gt_u if i32.const 1376 @@ -23286,7 +23229,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 7 i32.and if @@ -23300,33 +23243,35 @@ i32.const 12 i32.const 11 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $2 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $6 + local.get $2 + local.get $5 i32.store offset=8 + local.get $2 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array#__get local.get $0 + call $~lib/typedarray/Uint64Array#__get local.get $2 + local.get $0 call $~lib/typedarray/Uint64Array#__get i64.ne if @@ -23337,22 +23282,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $7 + local.get $6 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> @@ -23364,17 +23309,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Float32Array#constructor - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -23401,19 +23345,19 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength i32.const 0 - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $8 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $6 + local.tee $5 i32.gt_u if i32.const 1376 @@ -23423,7 +23367,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 3 i32.and if @@ -23437,33 +23381,35 @@ i32.const 12 i32.const 12 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $2 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $6 + local.get $2 + local.get $5 i32.store offset=8 + local.get $2 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#__get local.get $0 + call $~lib/typedarray/Float32Array#__get local.get $2 + local.get $0 call $~lib/typedarray/Float32Array#__get f32.ne if @@ -23474,22 +23420,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $7 + local.get $6 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release ) (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> @@ -23501,17 +23447,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 8444 i32.load - local.tee $4 + local.tee $3 call $~lib/typedarray/Float64Array#constructor - local.tee $7 + local.tee $6 call $~lib/rt/pure/__retain local.set $1 loop $for-loop|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -23538,19 +23483,19 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 + local.set $4 i32.const 1 global.set $~argumentsLength i32.const 0 - local.get $5 + local.get $4 call $~lib/rt/pure/__retain - local.tee $8 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 - local.tee $6 + local.tee $5 i32.gt_u if i32.const 1376 @@ -23560,7 +23505,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 7 i32.and if @@ -23574,33 +23519,35 @@ i32.const 12 i32.const 13 call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 + local.tee $2 + local.get $0 call $~lib/rt/pure/__retain i32.store - local.get $0 - local.get $6 + local.get $2 + local.get $5 i32.store offset=8 + local.get $2 local.get $0 - local.get $3 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#__get local.get $0 + call $~lib/typedarray/Float64Array#__get local.get $2 + local.get $0 call $~lib/typedarray/Float64Array#__get f64.ne if @@ -23611,22 +23558,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $7 + local.get $6 call $~lib/rt/pure/__release i32.const 8432 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $2 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) @@ -35131,57 +35078,51 @@ end i32.const 0 local.set $0 - i32.const 0 - local.set $3 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + i32.const 0 local.get $2 call $~lib/rt/pure/__retain local.tee $1 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - if (result i32) - i32.const 0 - local.get $4 - i32.ge_s - else - i32.const 1 - end + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select if local.get $1 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $1 i32.load offset=4 - local.set $6 + local.set $4 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if - local.get $6 + i32.const 1 + local.get $4 local.get $0 i32.const 3 i32.shl i32.add f64.load local.tee $10 + local.get $10 + f64.ne + local.get $10 f64.const nan:0x8000000000000 f64.eq - if (result i32) - i32.const 1 - else - local.get $10 - local.get $10 - f64.ne - end + select if local.get $1 call $~lib/rt/pure/__release i32.const 1 - local.set $3 br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $0 @@ -35193,8 +35134,8 @@ end local.get $1 call $~lib/rt/pure/__release + i32.const 0 end - local.get $3 i32.const 0 i32.ne i32.const 1 @@ -35229,57 +35170,51 @@ end i32.const 0 local.set $0 - i32.const 0 - local.set $4 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + i32.const 0 local.get $3 call $~lib/rt/pure/__retain local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $5 - if (result i32) - i32.const 0 - local.get $5 - i32.ge_s - else - i32.const 1 - end + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select if local.get $1 call $~lib/rt/pure/__release + i32.const 0 br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $1 i32.load offset=4 - local.set $7 + local.set $5 loop $while-continue|014 local.get $0 - local.get $5 + local.get $4 i32.lt_s if - local.get $7 + i32.const 1 + local.get $5 local.get $0 i32.const 2 i32.shl i32.add f32.load local.tee $9 + local.get $9 + f32.ne + local.get $9 f32.const nan:0x400000 f32.eq - if (result i32) - i32.const 1 - else - local.get $9 - local.get $9 - f32.ne - end + select if local.get $1 call $~lib/rt/pure/__release i32.const 1 - local.set $4 br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $0 @@ -35291,8 +35226,8 @@ end local.get $1 call $~lib/rt/pure/__release + i32.const 0 end - local.get $4 i32.const 0 i32.ne i32.const 1 diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index d310e637fb..3a7a9f164b 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -93,7 +93,7 @@ i32.sub i32.load i32.const 4 - i32.eq + i32.ne br_if $__inlined_func$super-inline/Foo#a@virtual end i32.const 4 diff --git a/tests/compiler/unary.optimized.wat b/tests/compiler/unary.optimized.wat index 495e5af382..28b5241b22 100644 --- a/tests/compiler/unary.optimized.wat +++ b/tests/compiler/unary.optimized.wat @@ -10,8 +10,6 @@ (func $start:unary (local $0 i32) (local $1 i64) - (local $2 f32) - (local $3 f64) global.get $unary/i i32.const 1 i32.add @@ -46,7 +44,7 @@ global.set $unary/i i32.const -1 global.set $unary/i - global.get $unary/i + i32.const -1 local.tee $0 i32.const 1 i32.add @@ -94,7 +92,7 @@ global.set $unary/I i64.const -1 global.set $unary/I - global.get $unary/I + i64.const -1 local.tee $1 i64.const 1 i64.add @@ -144,12 +142,9 @@ global.set $unary/f f32.const 1.25 global.set $unary/f - f32.const 1.25 - local.tee $2 - f32.const 1 - f32.sub + f32.const 0.25 global.set $unary/f - local.get $2 + f32.const 1.25 global.set $unary/f global.get $unary/F f64.const 1 @@ -187,12 +182,9 @@ global.set $unary/F f64.const 1.25 global.set $unary/F - f64.const 1.25 - local.tee $3 - f64.const 1 - f64.sub + f64.const 0.25 global.set $unary/F - local.get $3 + f64.const 1.25 global.set $unary/F ) (func $~start diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index 52c13126ca..2b9679f067 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -416,41 +416,41 @@ select ) (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) - (local $7 i32) + (local $7 i64) (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) (local $12 i64) (local $13 i64) local.get $3 local.get $1 i64.sub - local.set $9 + local.set $8 local.get $3 i64.const 1 i32.const 0 local.get $4 i32.sub - local.tee $10 + local.tee $11 i64.extend_i32_s i64.shl - local.tee $11 + local.tee $10 i64.const 1 i64.sub local.tee $12 i64.and - local.set $8 + local.set $7 local.get $3 - local.get $10 + local.get $11 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $7 + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $4 + local.set $9 loop $while-continue|0 - local.get $4 + local.get $9 i32.const 0 i32.gt_s if @@ -465,116 +465,112 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 - local.tee $2 - i32.const 10 - i32.ne - if - local.get $2 + block $case0|1 + 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 $case10|1 + 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 $7 + local.get $2 i32.const 1000000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 1000 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 1000 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 100 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 100 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 + local.get $2 i32.const 10 i32.div_u - local.set $2 - local.get $7 + local.set $4 + local.get $2 i32.const 10 i32.rem_u - local.set $7 + local.set $2 br $break|1 end - local.get $7 - local.set $2 + local.get $2 + local.set $4 i32.const 0 - local.set $7 + local.set $2 br $break|1 end i32.const 0 - local.set $2 + local.set $4 end - local.get $2 + local.get $4 local.get $6 i32.or if @@ -583,7 +579,7 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $4 i32.const 65535 i32.and i32.const 48 @@ -594,14 +590,14 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 - local.get $8 + local.set $9 local.get $7 + local.get $2 i64.extend_i32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl i64.add @@ -609,20 +605,20 @@ local.get $5 i64.le_u if - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $4 + local.get $9 i32.const 2 i32.shl i32.const 1936 i32.add i64.load32_u - local.get $10 + local.get $11 i64.extend_i32_s i64.shl - local.set $3 + local.set $10 local.get $0 local.get $6 i32.const 1 @@ -630,52 +626,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|3 i32.const 1 - local.get $9 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $3 + local.get $10 i64.add - local.get $9 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 local.get $3 - i64.add - local.get $9 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $3 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $9 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $3 + local.get $10 i64.add local.set $1 br $while-continue|3 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 return @@ -683,7 +678,7 @@ br $while-continue|0 end end - local.get $10 + local.get $11 i64.extend_i32_s local.set $13 loop $while-continue|4 (result i32) @@ -691,7 +686,7 @@ i64.const 10 i64.mul local.set $5 - local.get $8 + local.get $7 i64.const 10 i64.mul local.tee $3 @@ -721,26 +716,26 @@ i32.add local.set $6 end - local.get $4 + local.get $9 i32.const 1 i32.sub - local.set $4 + local.set $9 local.get $3 local.get $12 i64.and - local.tee $8 + local.tee $7 local.get $5 i64.ge_u br_if $while-continue|4 - local.get $4 + local.get $9 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $7 local.set $1 - local.get $9 + local.get $8 i32.const 0 - local.get $4 + local.get $9 i32.sub i32.const 2 i32.shl @@ -748,7 +743,7 @@ i32.add i64.load32_u i64.mul - local.set $3 + local.set $8 local.get $0 local.get $6 i32.const 1 @@ -756,52 +751,51 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $4 + local.set $2 loop $while-continue|6 i32.const 1 - local.get $3 + local.get $8 local.get $1 i64.sub local.get $1 - local.get $11 + local.get $10 i64.add - local.get $3 + local.tee $3 + local.get $8 i64.sub i64.gt_u - local.get $1 - local.get $11 - i64.add local.get $3 + local.get $8 i64.lt_u select i32.const 0 local.get $5 local.get $1 i64.sub - local.get $11 + local.get $10 i64.ge_u i32.const 0 local.get $1 - local.get $3 + local.get $8 i64.lt_u select select if - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.set $2 local.get $1 - local.get $11 + local.get $10 i64.add local.set $1 br $while-continue|6 end end + local.get $0 local.get $2 - local.get $4 i32.store16 local.get $6 end @@ -1024,18 +1018,16 @@ return end local.get $1 - local.get $1 local.get $2 i32.add local.tee $3 + i32.const 21 i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end + i32.const 0 + local.get $1 + local.get $3 + i32.le_s + select if (result i32) loop $for-loop|0 local.get $1 @@ -1256,15 +1248,15 @@ (local $3 i64) (local $4 i32) (local $5 i64) - (local $6 i32) + (local $6 i64) (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) local.get $1 f64.const 0 f64.lt - local.tee $8 + local.tee $9 if (result f64) local.get $0 i32.const 45 @@ -1275,60 +1267,60 @@ local.get $1 end i64.reinterpret_f64 - local.tee $3 + local.tee $2 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $3 + local.get $2 i64.const 4503599627370495 i64.and i64.add - local.tee $2 + local.tee $3 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i64.clz i32.wrap_i64 local.tee $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $6 + local.get $8 i32.const 1 - local.get $6 + local.get $8 select i32.const 1075 i32.sub - local.tee $6 + local.tee $8 i32.const 1 i32.sub local.get $4 i32.sub local.set $4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $9 + local.tee $10 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $6 - local.get $9 + local.get $8 + local.get $10 i32.sub local.get $4 i32.sub @@ -1361,10 +1353,10 @@ local.tee $4 i32.const 3 i32.shl - local.tee $9 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $9 + local.get $10 i32.const 1064 i32.add i64.load @@ -1377,52 +1369,40 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $6 i64.const 4294967295 i64.and - local.set $5 - local.get $0 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $2 + local.set $2 + local.get $6 i64.const 32 i64.shr_u - local.tee $7 - local.get $3 + local.tee $6 + global.get $~lib/util/number/_frc_plus + local.tee $5 i64.const 32 i64.shr_u - local.tee $10 + local.tee $7 i64.mul - local.get $5 + local.get $2 local.get $7 i64.mul local.get $2 + local.get $5 i64.const 4294967295 i64.and - local.tee $2 - local.get $5 + local.tee $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $10 - i64.mul local.get $5 + local.get $6 + i64.mul + local.get $7 i64.const 4294967295 i64.and i64.add @@ -1431,47 +1411,48 @@ i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $6 + i64.const 1 + i64.sub + local.set $5 local.get $0 - i32.sub + local.get $9 + i32.const 1 + i32.shl i32.add - i32.const -64 - i32.sub - global.get $~lib/util/number/_frc_plus - local.tee $2 - i64.const 32 - i64.shr_u - local.tee $5 + 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.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $10 - local.get $5 + local.get $2 + local.get $7 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and - local.tee $2 - local.get $10 + local.tee $3 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.get $2 - local.get $7 + local.get $3 + local.get $6 i64.mul - local.get $5 + local.get $7 i64.const 4294967295 i64.and i64.add @@ -1480,36 +1461,36 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $2 + global.get $~lib/util/number/_exp_pow + local.tee $4 + local.get $8 + local.get $0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $5 local.get $4 global.get $~lib/util/number/_exp i32.add i32.const -64 i32.sub - local.get $2 + local.get $5 + local.get $6 global.get $~lib/util/number/_frc_minus - local.tee $2 + local.tee $3 i64.const 32 i64.shr_u local.tee $5 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $7 i64.mul - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 + local.get $2 local.get $5 i64.mul local.get $2 + local.get $3 i64.const 4294967295 i64.and local.tee $2 - local.get $3 i64.mul i64.const 32 i64.shr_u @@ -1519,7 +1500,7 @@ i64.shr_u i64.add local.get $2 - local.get $7 + local.get $6 i64.mul local.get $3 i64.const 4294967295 @@ -1533,13 +1514,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $9 call $~lib/util/number/genDigits - local.get $8 + local.get $9 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $9 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index f7960187bc..2d68ddf8bf 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -133,15 +133,13 @@ i32.const -4 i32.and local.tee $2 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $2 i32.const 16 i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -165,23 +163,23 @@ local.get $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor local.set $2 - local.get $4 + local.get $3 i32.const 7 i32.sub - local.set $4 + local.set $3 end local.get $2 i32.const 16 i32.lt_u i32.const 0 - local.get $4 + local.get $3 i32.const 23 i32.lt_u select @@ -196,25 +194,25 @@ end local.get $1 i32.load offset=20 - local.set $3 + local.set $4 local.get $1 i32.load offset=16 local.tee $5 if local.get $5 - local.get $3 + local.get $4 i32.store offset=20 end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $5 i32.store offset=16 end local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add @@ -226,24 +224,24 @@ if local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 4 i32.shl i32.add i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=96 - local.get $3 + local.get $4 i32.eqz if local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 local.get $2 @@ -252,7 +250,7 @@ i32.xor i32.and local.set $1 - local.get $3 + local.get $4 local.get $1 i32.store offset=4 local.get $1 @@ -262,7 +260,7 @@ local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -416,15 +414,13 @@ i32.const -4 i32.and local.tee $3 + i32.const 1073741808 + i32.lt_u + i32.const 0 + local.get $3 i32.const 16 i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end + select i32.eqz if i32.const 0 @@ -672,16 +668,16 @@ (local $1 i32) (local $2 i32) global.get $~lib/rt/tlsf/ROOT - local.tee $0 + local.tee $1 i32.eqz if i32.const 1 memory.size - local.tee $0 + local.tee $1 i32.gt_s if (result i32) i32.const 1 - local.get $0 + local.get $1 i32.sub memory.grow i32.const 0 @@ -693,18 +689,19 @@ unreachable end i32.const 1216 - local.tee $0 + local.set $1 + i32.const 1216 i32.const 0 i32.store i32.const 2784 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 1216 @@ -718,10 +715,10 @@ i32.const 16 i32.lt_u if - local.get $1 + local.get $2 + local.get $0 i32.const 4 i32.shl - local.get $2 i32.add i32.const 2 i32.shl @@ -736,10 +733,10 @@ 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 @@ -752,7 +749,7 @@ i32.const 1216 global.set $~lib/rt/tlsf/ROOT end - local.get $0 + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1215,14 +1212,14 @@ global.set $while/ran i32.const 10 local.set $2 - loop $while-continue|04 + loop $while-continue|013 local.get $2 if local.get $2 i32.const 1 i32.sub local.set $2 - br $while-continue|04 + br $while-continue|013 end end local.get $2 @@ -1242,7 +1239,7 @@ local.set $0 i32.const 10 local.set $1 - loop $while-continue|03 + loop $while-continue|04 local.get $0 if loop $while-continue|1 @@ -1259,7 +1256,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|03 + br $while-continue|04 end end local.get $0 @@ -1359,9 +1356,9 @@ loop $while-continue|06 block $while-break|0 call $while/Ref#constructor - local.tee $3 + local.tee $1 call $~lib/rt/pure/__release - local.get $3 + local.get $1 if local.get $2 i32.const 1 @@ -1421,14 +1418,14 @@ global.set $while/ran i32.const 0 local.set $2 - loop $while-continue|067 + loop $while-continue|02 local.get $2 i32.const 1 i32.add local.tee $2 i32.const 1 i32.lt_s - br_if $while-continue|067 + br_if $while-continue|02 end i32.const 1 global.set $while/ran @@ -1436,14 +1433,14 @@ global.set $while/ran i32.const 0 local.set $2 - loop $while-continue|08 + loop $while-continue|03 local.get $2 i32.const 1 i32.add local.tee $2 i32.const 1 i32.lt_s - br_if $while-continue|08 + br_if $while-continue|03 end i32.const 1 global.set $while/ran