diff --git a/src/module.ts b/src/module.ts index 873516ad92..2408137baa 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1512,6 +1512,7 @@ export class Module { passes.push("flatten"); passes.push("simplify-locals-notee-nostructure"); passes.push("vacuum"); + passes.push("code-folding"); passes.push("flatten"); passes.push("local-cse"); @@ -1529,8 +1530,10 @@ export class Module { // passes.push("post-assemblyscript"); // } passes.push("optimize-instructions"); - passes.push("inlining"); - passes.push("dce"); + if (optimizeLevel >= 3 || shrinkLevel >= 1) { + passes.push("dce"); + passes.push("inlining"); + } passes.push("remove-unused-brs"); passes.push("remove-unused-names"); passes.push("inlining-optimizing"); @@ -1549,11 +1552,13 @@ export class Module { } passes.push("simplify-locals-nostructure"); passes.push("vacuum"); + passes.push("reorder-locals"); passes.push("remove-unused-brs"); passes.push("coalesce-locals"); passes.push("simplify-locals"); passes.push("vacuum"); + passes.push("reorder-locals"); passes.push("coalesce-locals"); passes.push("reorder-locals"); @@ -1576,8 +1581,8 @@ export class Module { } if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("rse"); + passes.push("vacuum"); } - passes.push("vacuum"); // --- PassRunner::addDefaultGlobalOptimizationPostPasses --- @@ -1623,22 +1628,30 @@ export class Module { // very expensive, so O3 only passes.push("simplify-globals"); passes.push("vacuum"); + + passes.push("precompute-propagate"); + passes.push("vacuum"); + // replace indirect with direct calls again and inline passes.push("inlining-optimizing"); passes.push("directize"); passes.push("dae-optimizing"); - passes.push("precompute-propagate"); - passes.push("vacuum"); + passes.push("merge-locals"); passes.push("coalesce-locals"); - passes.push("simplify-locals-nostructure"); + passes.push("simplify-locals"); passes.push("vacuum"); + passes.push("inlining-optimizing"); passes.push("precompute-propagate"); + passes.push("vacuum"); + + passes.push("coalesce-locals"); } passes.push("remove-unused-brs"); passes.push("remove-unused-names"); passes.push("vacuum"); + passes.push("optimize-instructions"); passes.push("simplify-globals-optimizing"); } diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index 64f871f36e..2f7c95f223 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -114,7 +114,7 @@ local.get $1 i32.const 8388608 i32.ge_u - if + if (result i32) local.get $1 i32.const 8388608 i32.eq @@ -122,9 +122,9 @@ local.get $1 i32.const 8388608 i32.sub - local.set $1 + else + local.get $1 end - local.get $1 i32.const 1 i32.shl local.set $1 @@ -261,7 +261,7 @@ local.get $1 i64.const 4503599627370496 i64.ge_u - if + if (result i64) local.get $1 i64.const 4503599627370496 i64.eq @@ -269,9 +269,9 @@ local.get $1 i64.const 4503599627370496 i64.sub - local.set $1 + else + local.get $1 end - local.get $1 i64.const 1 i64.shl local.set $1 diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index 68a6b7efce..9f337184e4 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -98,12 +98,11 @@ local.set $0 end local.get $0 - i32.eqz if (result i32) + local.get $0 + else i32.const 3 call $~lib/rt/stub/__alloc - else - local.get $0 end ) (func $~lib/string/String#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index 4c1302c68e..9678b0e24c 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -287,7 +287,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -307,35 +307,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -345,12 +345,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -358,7 +358,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -377,42 +377,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -427,12 +429,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -442,38 +444,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -491,7 +493,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -500,21 +502,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -541,7 +543,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -1050,19 +1052,19 @@ i32.const 0 global.set $do/ran i32.const 10 - local.set $1 + local.set $0 loop $do-continue|0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $0 br_if $do-continue|0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1040 @@ -1071,7 +1073,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 10 i32.ne if @@ -1087,17 +1089,17 @@ i32.const 0 global.set $do/ran i32.const 10 - local.set $0 + local.set $1 loop $do-continue|00 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 br_if $do-continue|00 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -1126,17 +1128,17 @@ i32.const 0 global.set $do/ran i32.const 0 - local.set $1 + local.set $0 loop $do-continue|01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.tee $1 + local.tee $0 i32.const 10 i32.ne br_if $do-continue|01 end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1150,17 +1152,17 @@ i32.const 1 global.set $do/ran i32.const 0 - local.set $1 + local.set $0 loop $do-continue|02 - local.get $1 + local.get $0 i32.const 1 i32.add - local.tee $1 + local.tee $0 i32.const 10 i32.ne br_if $do-continue|02 end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1186,17 +1188,17 @@ i32.const 0 global.set $do/ran i32.const 0 - local.set $1 - loop $do-continue|08 - local.get $1 + local.set $0 + loop $do-continue|06 + local.get $0 i32.const 1 i32.add - local.tee $1 + local.tee $0 i32.const 10 i32.ne - br_if $do-continue|08 + br_if $do-continue|06 end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1212,22 +1214,22 @@ i32.const 0 global.set $do/ran i32.const 0 - local.set $0 - i32.const 0 local.set $1 + i32.const 0 + local.set $0 loop $do-continue|03 - local.get $0 + local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 i32.const 10 i32.ne if loop $do-continue|1 - local.get $1 + local.get $0 i32.const 1 i32.add - local.tee $1 + local.tee $0 i32.const 10 i32.rem_s br_if $do-continue|1 @@ -1235,7 +1237,7 @@ br $do-continue|03 end end - local.get $0 + local.get $1 i32.const 10 i32.ne if @@ -1246,7 +1248,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 90 i32.ne if @@ -1262,7 +1264,7 @@ i32.const 0 global.set $do/ran call $do/Ref#constructor - local.set $0 + local.set $1 loop $do-continue|04 local.get $2 i32.const 1 @@ -1272,20 +1274,20 @@ i32.eq if i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 if - local.get $0 + local.get $1 call $~lib/rt/pure/__release end else call $do/Ref#constructor - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__release end - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 br_if $do-continue|04 end local.get $2 @@ -1299,7 +1301,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1040 @@ -1310,7 +1312,7 @@ end i32.const 1 global.set $do/ran - local.get $0 + local.get $1 call $~lib/rt/pure/__release global.get $do/ran i32.eqz @@ -1327,7 +1329,7 @@ i32.const 0 local.set $2 call $do/Ref#constructor - local.set $0 + local.set $1 loop $do-continue|05 block $do-break|0 local.get $2 @@ -1337,19 +1339,19 @@ i32.const 10 i32.eq if - local.get $0 + local.get $1 if - local.get $0 + local.get $1 call $~lib/rt/pure/__release end i32.const 0 - local.set $0 + local.set $1 br $do-break|0 end call $do/Ref#constructor - local.tee $1 + local.tee $0 call $~lib/rt/pure/__release - local.get $1 + local.get $0 br_if $do-continue|05 end end @@ -1364,7 +1366,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1040 @@ -1375,7 +1377,7 @@ end i32.const 1 global.set $do/ran - local.get $0 + local.get $1 call $~lib/rt/pure/__release global.get $do/ran i32.eqz diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index d45b086784..b46078dcd4 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -212,7 +212,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -232,35 +232,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -270,12 +270,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -283,7 +283,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -302,42 +302,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -352,12 +354,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -367,38 +369,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -416,7 +418,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -425,21 +427,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -466,7 +468,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -707,23 +709,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1818,27 +1819,27 @@ (local $4 i32) (local $5 i32) global.get $~lib/rt/pure/ROOTS - local.tee $0 - local.tee $4 - local.set $3 + local.tee $1 + local.tee $3 + local.set $4 global.get $~lib/rt/pure/CUR - local.set $1 + local.set $0 loop $for-loop|0 - local.get $3 - local.get $1 + local.get $4 + local.get $0 i32.lt_u if - local.get $3 + local.get $4 i32.load - local.tee $2 - i32.load offset=4 local.tee $5 + i32.load offset=4 + local.tee $2 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $2 i32.const 268435455 i32.and i32.const 0 @@ -1847,88 +1848,88 @@ i32.const 0 end if - local.get $2 + local.get $5 call $~lib/rt/pure/markGray - local.get $4 - local.get $2 + local.get $3 + local.get $5 i32.store - local.get $4 + local.get $3 i32.const 4 i32.add - local.set $4 + local.set $3 else i32.const 0 - local.get $5 + local.get $2 i32.const 268435455 i32.and i32.eqz - local.get $5 + local.get $2 i32.const 1879048192 i32.and select if global.get $~lib/rt/tlsf/ROOT - local.get $2 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $2 local.get $5 + local.get $2 i32.const 2147483647 i32.and i32.store offset=4 end end - local.get $3 + local.get $4 i32.const 4 i32.add - local.set $3 + local.set $4 br $for-loop|0 end end - local.get $4 + local.get $3 global.set $~lib/rt/pure/CUR - local.get $0 - local.set $1 + local.get $1 + local.set $0 loop $for-loop|1 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_u if - local.get $1 + local.get $0 i32.load call $~lib/rt/pure/scan - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end - local.get $0 - local.set $1 + local.get $1 + local.set $0 loop $for-loop|2 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_u if - local.get $1 + local.get $0 i32.load - local.tee $5 - local.get $5 + local.tee $2 + local.get $2 i32.load offset=4 i32.const 2147483647 i32.and i32.store offset=4 - local.get $5 + local.get $2 call $~lib/rt/pure/collectWhite - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 br $for-loop|2 end end - local.get $0 + local.get $1 global.set $~lib/rt/pure/CUR ) (func $~lib/rt/pure/decrement (param $0 i32) diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index b5c9d05fb1..89dd49b021 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -284,7 +284,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -304,35 +304,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -342,12 +342,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -355,7 +355,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -374,42 +374,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -424,12 +426,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -439,38 +441,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -488,7 +490,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -497,21 +499,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -538,7 +540,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -1048,18 +1050,18 @@ i32.const 0 global.set $for/ran loop $for-loop|0 - local.get $1 + local.get $0 i32.const 10 i32.lt_s if - 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 $1 + local.get $0 i32.const 10 i32.ne if @@ -1075,20 +1077,20 @@ i32.const 0 global.set $for/ran i32.const 0 - local.set $1 + local.set $0 loop $for-loop|00 - local.get $1 + local.get $0 i32.const 10 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|00 end end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1104,20 +1106,20 @@ i32.const 0 global.set $for/ran i32.const 10 - local.set $1 + local.set $0 loop $for-loop|01 - local.get $1 + local.get $0 i32.const 0 i32.gt_s if - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $for-loop|01 end end - local.get $1 + local.get $0 if i32.const 0 i32.const 1040 @@ -1131,20 +1133,20 @@ i32.const 0 global.set $for/ran i32.const 0 - local.set $1 + local.set $0 loop $for-loop|02 - local.get $1 + local.get $0 i32.const 10 i32.ne if - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|02 end end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1160,15 +1162,15 @@ i32.const 0 global.set $for/ran i32.const 10 - local.set $1 + local.set $0 loop $for-loop|04 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $0 br_if $for-loop|04 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1040 @@ -1182,17 +1184,17 @@ i32.const 0 global.set $for/ran i32.const 0 - local.set $1 + local.set $0 loop $for-loop|06 - local.get $1 + local.get $0 i32.const 1 i32.add - local.tee $1 + local.tee $0 i32.const 10 i32.ne br_if $for-loop|06 end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1212,20 +1214,20 @@ i32.const 0 global.set $for/ran i32.const 0 - local.set $1 + local.set $0 loop $for-loop|07 - local.get $1 + local.get $0 i32.const 10 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|07 end end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1262,36 +1264,36 @@ i32.const 0 global.set $for/ran call $for/Ref#constructor - local.set $1 + local.set $0 loop $for-loop|03 - local.get $1 + local.get $0 if - local.get $3 + local.get $2 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 10 i32.eq if i32.const 0 - local.set $0 - local.get $1 + local.set $1 + local.get $0 if - local.get $1 + local.get $0 call $~lib/rt/pure/__release end else call $for/Ref#constructor - local.set $0 - local.get $1 + local.set $1 + local.get $0 call $~lib/rt/pure/__release end - local.get $0 - local.set $1 + local.get $1 + local.set $0 br $for-loop|03 end end - local.get $3 + local.get $2 i32.const 10 i32.ne if @@ -1302,7 +1304,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 if i32.const 0 i32.const 1040 @@ -1313,7 +1315,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 @@ -1329,40 +1331,40 @@ global.set $for/ran call $for/Ref#constructor call $for/Ref#constructor - local.set $0 + local.set $1 call $~lib/rt/pure/__release loop $for-loop|05 block $for-break0 call $for/Ref#constructor - local.tee $1 + local.tee $0 call $~lib/rt/pure/__release - local.get $1 + local.get $0 if - local.get $2 + local.get $3 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 10 i32.eq if - local.get $0 + local.get $1 if - local.get $0 + local.get $1 call $~lib/rt/pure/__release end i32.const 0 - local.set $0 + local.set $1 br $for-break0 end call $for/Ref#constructor - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.set $0 + local.set $1 br $for-loop|05 end end end - local.get $2 + local.get $3 i32.const 10 i32.ne if @@ -1373,7 +1375,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1040 @@ -1384,7 +1386,7 @@ end i32.const 1 global.set $for/ran - local.get $0 + local.get $1 call $~lib/rt/pure/__release global.get $for/ran i32.eqz diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index d9967cfc2f..8804cd6553 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -219,7 +219,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -239,35 +239,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -277,12 +277,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -290,7 +290,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -309,42 +309,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -359,12 +361,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -374,38 +376,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -423,7 +425,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -432,21 +434,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -473,7 +475,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -690,23 +692,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index 3845d79961..c6a03f1537 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -204,7 +204,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -224,35 +224,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -262,12 +262,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -275,7 +275,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -294,42 +294,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -344,12 +346,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -359,38 +361,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -408,7 +410,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -417,21 +419,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -458,7 +460,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index aa7d681c8d..1419f32b1a 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -205,7 +205,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -225,35 +225,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -263,12 +263,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -276,7 +276,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -295,42 +295,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -345,12 +347,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -360,38 +362,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -409,7 +411,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -418,21 +420,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -459,7 +461,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index 81b0ab9b0e..1077a81d75 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -202,7 +202,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -222,35 +222,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -260,12 +260,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -273,7 +273,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -292,42 +292,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -342,12 +344,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -357,38 +359,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -406,7 +408,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -415,21 +417,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -456,7 +458,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -971,13 +973,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.tee $2 - if + if (result i32) i32.const 1 - local.set $1 + else + i32.const 0 end local.get $2 call $~lib/rt/pure/__release - local.get $1 i32.eqz if i32.const 0 diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 08e5789bf9..48c9c1ad62 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -207,7 +207,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -227,35 +227,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -265,12 +265,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -278,7 +278,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -297,42 +297,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -347,12 +349,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -362,38 +364,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -411,7 +413,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -420,21 +422,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -461,7 +463,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -959,14 +961,13 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 - i32.eqz - if + if (result i32) + local.get $0 + else i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.set $0 end - local.get $0 ) (func $~lib/rt/pure/__release (param $0 i32) local.get $0 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index e4c5ad5b7e..b6ba8f3541 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 i64) - (local $8 i32) + (local $7 i32) + (local $8 i64) (local $9 i64) (local $10 i32) (local $11 i64) @@ -372,13 +372,13 @@ i64.sub local.tee $12 i64.and - local.set $7 + local.set $8 local.get $3 local.get $10 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $7 call $~lib/util/number/decimalCount32 local.set $4 loop $while-continue|0 @@ -406,111 +406,111 @@ i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case10|1 end - local.get $6 + local.get $7 i32.const 1000000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 1000000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 100000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 100000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 10000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 10000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 1000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 1000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 100000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 100000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 10000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 10000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 1000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 1000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 100 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 100 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 10 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 10 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 local.set $2 i32.const 0 - local.set $6 + local.set $7 br $break|1 end i32.const 0 local.set $2 end local.get $2 - local.get $8 + local.get $6 i32.or if local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.shl i32.add @@ -520,17 +520,17 @@ i32.const 48 i32.add i32.store16 - local.get $8 + local.get $6 i32.const 1 i32.add - local.set $8 + local.set $6 end local.get $4 i32.const 1 i32.sub local.set $4 + local.get $8 local.get $7 - local.get $6 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -555,7 +555,7 @@ i64.shl local.set $3 local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.sub i32.const 1 @@ -572,11 +572,11 @@ local.get $1 local.get $3 i64.add - local.tee $7 + local.tee $8 local.get $9 i64.sub i64.gt_u - local.get $7 + local.get $8 local.get $9 i64.lt_u select @@ -607,7 +607,7 @@ local.get $0 local.get $4 i32.store16 - local.get $8 + local.get $6 return end br $while-continue|0 @@ -621,35 +621,35 @@ i64.const 10 i64.mul local.set $5 - local.get $7 + local.get $8 i64.const 10 i64.mul local.tee $3 local.get $1 i64.shr_u - local.tee $7 - local.get $8 + local.tee $8 + local.get $6 i64.extend_i32_s i64.or i64.const 0 i64.ne if local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.shl i32.add - local.get $7 + local.get $8 i32.wrap_i64 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $8 + local.get $6 i32.const 1 i32.add - local.set $8 + local.set $6 end local.get $4 i32.const 1 @@ -658,7 +658,7 @@ local.get $3 local.get $12 i64.and - local.tee $7 + local.tee $8 local.get $5 i64.ge_u br_if $while-continue|4 @@ -667,7 +667,7 @@ global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 + local.get $8 local.set $1 local.get $9 i32.const 0 @@ -681,7 +681,7 @@ i64.mul local.set $3 local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.sub i32.const 1 @@ -698,11 +698,11 @@ local.get $1 local.get $11 i64.add - local.tee $7 + local.tee $8 local.get $3 i64.sub i64.gt_u - local.get $7 + local.get $8 local.get $3 i64.lt_u select @@ -733,7 +733,7 @@ local.get $0 local.get $4 i32.store16 - local.get $8 + local.get $6 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1419,21 +1419,21 @@ end i32.const 56 call $~lib/rt/stub/__alloc - local.tee $1 - call $~lib/util/number/dtoa_core local.tee $0 + call $~lib/util/number/dtoa_core + local.tee $1 i32.const 28 i32.ne - if - local.get $1 + if (result i32) local.get $0 - call $~lib/string/String#substring local.get $1 + call $~lib/string/String#substring + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select i32.eqz if @@ -1444,7 +1444,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 16 i32.sub local.tee $2 @@ -1460,7 +1460,7 @@ unreachable end global.get $~lib/rt/stub/offset - local.get $1 + local.get $0 local.get $2 i32.load i32.add @@ -1469,9 +1469,9 @@ local.get $2 global.set $~lib/rt/stub/offset end - local.set $1 + else + local.get $0 end - local.get $1 i32.const 2560 call $~lib/string/String.__eq i32.eqz @@ -1581,11 +1581,11 @@ unreachable end global.get $number/a - local.tee $1 + local.tee $0 i32.const 1 i32.add global.set $number/a - local.get $1 + local.get $0 call $~lib/number/I32#toString i32.const 1360 call $~lib/string/String.__eq @@ -1599,11 +1599,11 @@ unreachable end global.get $number/a - local.tee $1 + local.tee $0 i32.const 1 i32.sub global.set $number/a - local.get $1 + local.get $0 call $~lib/number/I32#toString i32.const 2688 call $~lib/string/String.__eq diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 5b2371b258..8ed9a4db9e 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -211,7 +211,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -231,35 +231,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -269,12 +269,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -282,7 +282,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -301,42 +301,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -351,12 +353,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -366,38 +368,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -415,7 +417,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -424,21 +426,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -465,7 +467,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -682,23 +684,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1811,22 +1812,22 @@ i32.const 3 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=4 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 123 i32.store - local.get $1 + local.get $0 i32.const 1040 i32.store offset=4 - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.load i32.const 123 i32.ne @@ -1838,7 +1839,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 i32.const 1040 call $~lib/string/String.__eq @@ -1851,201 +1852,201 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release i32.const 8 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 123 i32.store - local.get $1 + local.get $0 block $__inlined_func$~lib/string/String#substring (result i32) i32.const 1312 i32.const 0 i32.const 1040 call $~lib/string/String#get:length - local.tee $2 + local.tee $5 i32.const 0 - local.get $2 + local.get $5 i32.lt_s select - local.tee $3 + local.tee $4 i32.const 5 - local.get $2 + local.get $5 i32.const 5 - local.get $2 + local.get $5 i32.lt_s select - local.tee $5 - local.get $3 - local.get $5 + local.tee $2 + local.get $4 + local.get $2 i32.gt_s select i32.const 1 i32.shl - local.tee $4 - local.get $3 - local.get $5 - local.get $3 - local.get $5 + local.tee $3 + local.get $4 + local.get $2 + local.get $4 + local.get $2 i32.lt_s select i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.sub - local.tee $5 + local.tee $2 i32.eqz br_if $__inlined_func$~lib/string/String#substring drop i32.const 1040 i32.const 0 - local.get $4 - local.get $2 + local.get $3 + local.get $5 i32.const 1 i32.shl i32.eq - local.get $3 + local.get $4 select br_if $__inlined_func$~lib/string/String#substring drop - local.get $5 + local.get $2 i32.const 1 call $~lib/rt/tlsf/__alloc - local.tee $4 - local.get $3 + local.tee $3 + local.get $4 i32.const 1040 i32.add - local.get $5 + local.get $2 call $~lib/memory/memory.copy - local.get $4 + local.get $3 call $~lib/rt/pure/__retain end i32.store offset=4 - local.get $1 + local.get $0 call $object-literal/testUnmanaged i32.const 65 i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i64.const 0 i64.store offset=16 - local.get $1 + local.get $0 f32.const 0 f32.store offset=24 - local.get $1 + local.get $0 f64.const 0 f64.store offset=32 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=40 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=41 - local.get $1 + local.get $0 i32.const 0 i32.store16 offset=42 - local.get $1 + local.get $0 i32.const 0 i32.store16 offset=44 - local.get $1 + local.get $0 i32.const 0 i32.store offset=48 - local.get $1 + local.get $0 i32.const 0 i32.store offset=52 - local.get $1 + local.get $0 f64.const 0 f64.store offset=56 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=64 - local.get $1 + local.get $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i64.const 0 i64.store offset=16 - local.get $1 + local.get $0 f32.const 0 f32.store offset=24 - local.get $1 + local.get $0 f64.const 0 f64.store offset=32 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=40 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=41 - local.get $1 + local.get $0 i32.const 0 i32.store16 offset=42 - local.get $1 + local.get $0 i32.const 0 i32.store16 offset=44 - local.get $1 + local.get $0 i32.const 0 i32.store offset=48 - local.get $1 + local.get $0 i32.const 0 i32.store offset=52 - local.get $1 + local.get $0 f64.const 0 f64.store offset=56 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=64 - local.get $1 + local.get $0 call $object-literal/testOmittedTypes i32.const 16 i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $4 + local.tee $3 i32.const 0 i32.store - local.get $4 + local.get $3 i32.const 0 i32.store offset=4 - local.get $4 + local.get $3 f64.const 0 f64.store offset=8 - local.get $4 + local.get $3 i32.const 0 i32.store - local.get $4 + local.get $3 i32.const 1360 i32.store offset=4 - local.get $4 + local.get $3 f64.const 0 f64.store offset=8 - local.get $4 + local.get $3 call $~lib/rt/pure/__retain - local.tee $5 + local.tee $2 i32.load if i32.const 0 @@ -2055,7 +2056,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 i32.load offset=4 i32.const 1360 call $~lib/string/String.__eq @@ -2068,7 +2069,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 f64.load offset=8 f64.const 0 f64.ne @@ -2080,72 +2081,72 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 call $~lib/rt/pure/__release i32.const 40 i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $5 + local.tee $2 i32.const 1392 i32.store - local.get $5 + local.get $2 i32.const 1424 i32.store offset=4 - local.get $5 + local.get $2 i32.const 0 i32.store offset=8 - local.get $5 + local.get $2 i32.const 0 i32.store offset=12 - local.get $5 + local.get $2 i32.const 0 i32.store offset=16 - local.get $5 + local.get $2 i32.const 0 i32.store offset=20 - local.get $5 + local.get $2 i32.const 0 i32.store offset=24 - local.get $5 + local.get $2 i32.const 0 i32.store offset=28 - local.get $5 + local.get $2 i32.const 0 i32.store offset=32 - local.get $5 + local.get $2 i32.const -1 i32.store offset=36 - local.get $5 + local.get $2 i32.const 0 i32.store offset=8 - local.get $5 + local.get $2 i32.const 0 i32.store offset=12 - local.get $5 + local.get $2 i32.const 0 i32.store offset=16 - local.get $5 + local.get $2 i32.const 0 i32.store offset=20 - local.get $5 + local.get $2 i32.const 0 i32.store offset=24 - local.get $5 + local.get $2 i32.const 0 i32.store offset=28 - local.get $5 + local.get $2 i32.const 0 i32.store offset=32 - local.get $5 + local.get $2 call $object-literal/testOmittedFoo - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $0 call $~lib/rt/pure/__release - local.get $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $2 call $~lib/rt/pure/__release ) (func $~start diff --git a/tests/compiler/rc/local-init.optimized.wat b/tests/compiler/rc/local-init.optimized.wat index fc9690d434..85d41f12f6 100644 --- a/tests/compiler/rc/local-init.optimized.wat +++ b/tests/compiler/rc/local-init.optimized.wat @@ -202,7 +202,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -222,35 +222,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -260,12 +260,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -273,7 +273,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -292,42 +292,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -342,12 +344,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -357,38 +359,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -406,7 +408,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -415,21 +417,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -456,7 +458,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat index 9c4df4e424..f06157dc9d 100644 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-and-mismatch.optimized.wat @@ -202,7 +202,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -222,35 +222,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -260,12 +260,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -273,7 +273,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -292,42 +292,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -342,12 +344,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -357,38 +359,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -406,7 +408,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -415,21 +417,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -456,7 +458,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -966,14 +968,14 @@ global.set $rc/logical-and-mismatch/gloRef call $rc/logical-and-mismatch/Ref#constructor local.tee $0 - if + if (result i32) local.get $0 call $~lib/rt/pure/__release global.get $rc/logical-and-mismatch/gloRef call $~lib/rt/pure/__retain - local.set $0 + else + local.get $0 end - local.get $0 call $~lib/rt/pure/__release global.get $rc/logical-and-mismatch/gloRef local.tee $0 @@ -986,13 +988,13 @@ call $~lib/rt/pure/__release call $rc/logical-and-mismatch/Ref#constructor local.tee $0 - if + if (result i32) local.get $0 call $~lib/rt/pure/__release call $rc/logical-and-mismatch/Ref#constructor - local.set $0 + else + local.get $0 end - local.get $0 call $~lib/rt/pure/__release global.get $rc/logical-and-mismatch/gloRef call $~lib/rt/pure/__release diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat index 6d644fbf8f..e6aaa14ed7 100644 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-or-mismatch.optimized.wat @@ -202,7 +202,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -222,35 +222,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -260,12 +260,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -273,7 +273,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -292,42 +292,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -342,12 +344,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -357,38 +359,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -406,7 +408,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -415,21 +417,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -456,7 +458,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -966,15 +968,14 @@ global.set $rc/logical-or-mismatch/gloRef call $rc/logical-or-mismatch/Ref#constructor local.tee $0 - i32.eqz - if + if (result i32) + local.get $0 + else local.get $0 call $~lib/rt/pure/__release global.get $rc/logical-or-mismatch/gloRef call $~lib/rt/pure/__retain - local.set $0 end - local.get $0 call $~lib/rt/pure/__release global.get $rc/logical-or-mismatch/gloRef local.tee $0 @@ -987,14 +988,13 @@ call $~lib/rt/pure/__release call $rc/logical-or-mismatch/Ref#constructor local.tee $0 - i32.eqz - if + if (result i32) + local.get $0 + else local.get $0 call $~lib/rt/pure/__release call $rc/logical-or-mismatch/Ref#constructor - local.set $0 end - local.get $0 call $~lib/rt/pure/__release global.get $rc/logical-or-mismatch/gloRef call $~lib/rt/pure/__release diff --git a/tests/compiler/rc/optimize.optimized.wat b/tests/compiler/rc/optimize.optimized.wat index ff3771746b..f5a7756869 100644 --- a/tests/compiler/rc/optimize.optimized.wat +++ b/tests/compiler/rc/optimize.optimized.wat @@ -292,7 +292,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -312,35 +312,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -350,12 +350,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -363,7 +363,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -382,42 +382,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -432,12 +434,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -447,38 +449,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -496,7 +498,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -505,21 +507,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -546,7 +548,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -1013,7 +1015,6 @@ local.get $1 ) (func $rc/optimize/OptimizeARC.eliminates.linearChain (param $0 i32) - (local $1 i32) local.get $0 call $~lib/rt/pure/__retain local.tee $0 diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat index 0dfd029536..cd89413c86 100644 --- a/tests/compiler/rc/rereturn.optimized.wat +++ b/tests/compiler/rc/rereturn.optimized.wat @@ -205,7 +205,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -225,35 +225,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -263,12 +263,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -276,7 +276,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -295,42 +295,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -345,12 +347,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -360,38 +362,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -409,7 +411,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -418,21 +420,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -459,7 +461,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -676,23 +678,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz diff --git a/tests/compiler/rc/ternary-mismatch.optimized.wat b/tests/compiler/rc/ternary-mismatch.optimized.wat index 1b8894e2ed..5d516a991a 100644 --- a/tests/compiler/rc/ternary-mismatch.optimized.wat +++ b/tests/compiler/rc/ternary-mismatch.optimized.wat @@ -204,7 +204,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -224,35 +224,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -262,12 +262,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -275,7 +275,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -294,42 +294,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -344,12 +346,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -359,38 +361,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -408,7 +410,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -417,21 +419,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -458,7 +460,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 97ebbdf7a2..49a4bab338 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -112,7 +112,7 @@ (local $3 i32) (local $4 i32) i32.const 1040 - local.set $1 + local.set $3 i32.const 8 local.set $4 block $~lib/util/memory/memmove|inlined.0 @@ -146,13 +146,13 @@ i32.const 1 i32.add local.set $0 - local.get $1 - local.tee $3 + local.get $3 + local.tee $1 i32.const 1 i32.add - local.set $1 + local.set $3 local.get $2 - local.get $3 + local.get $1 i32.load8_u i32.store8 br $while-continue|0 @@ -164,7 +164,7 @@ i32.ge_u if local.get $0 - local.get $1 + local.get $3 i64.load i64.store local.get $4 @@ -175,10 +175,10 @@ i32.const 8 i32.add local.set $0 - local.get $1 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -191,13 +191,13 @@ i32.const 1 i32.add local.set $0 - local.get $1 - local.tee $3 + local.get $3 + local.tee $1 i32.const 1 i32.add - local.set $1 + local.set $3 local.get $2 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $4 diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 842873e15a..46710c3bf1 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 i64) - (local $8 i32) + (local $7 i32) + (local $8 i64) (local $9 i64) (local $10 i32) (local $11 i64) @@ -387,13 +387,13 @@ i64.sub local.tee $12 i64.and - local.set $7 + local.set $8 local.get $3 local.get $10 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $7 call $~lib/util/number/decimalCount32 local.set $4 loop $while-continue|0 @@ -421,111 +421,111 @@ i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case10|1 end - local.get $6 + local.get $7 i32.const 1000000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 1000000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 100000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 100000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 10000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 10000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 1000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 1000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 100000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 100000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 10000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 10000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 1000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 1000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 100 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 100 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 10 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 10 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 local.set $2 i32.const 0 - local.set $6 + local.set $7 br $break|1 end i32.const 0 local.set $2 end local.get $2 - local.get $8 + local.get $6 i32.or if local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.shl i32.add @@ -535,17 +535,17 @@ i32.const 48 i32.add i32.store16 - local.get $8 + local.get $6 i32.const 1 i32.add - local.set $8 + local.set $6 end local.get $4 i32.const 1 i32.sub local.set $4 + local.get $8 local.get $7 - local.get $6 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -570,7 +570,7 @@ i64.shl local.set $3 local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.sub i32.const 1 @@ -587,11 +587,11 @@ local.get $1 local.get $3 i64.add - local.tee $7 + local.tee $8 local.get $9 i64.sub i64.gt_u - local.get $7 + local.get $8 local.get $9 i64.lt_u select @@ -622,7 +622,7 @@ local.get $0 local.get $4 i32.store16 - local.get $8 + local.get $6 return end br $while-continue|0 @@ -636,35 +636,35 @@ i64.const 10 i64.mul local.set $5 - local.get $7 + local.get $8 i64.const 10 i64.mul local.tee $3 local.get $1 i64.shr_u - local.tee $7 - local.get $8 + local.tee $8 + local.get $6 i64.extend_i32_s i64.or i64.const 0 i64.ne if local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.shl i32.add - local.get $7 + local.get $8 i32.wrap_i64 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $8 + local.get $6 i32.const 1 i32.add - local.set $8 + local.set $6 end local.get $4 i32.const 1 @@ -673,7 +673,7 @@ local.get $3 local.get $12 i64.and - local.tee $7 + local.tee $8 local.get $5 i64.ge_u br_if $while-continue|4 @@ -682,7 +682,7 @@ global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 + local.get $8 local.set $1 local.get $9 i32.const 0 @@ -696,7 +696,7 @@ i64.mul local.set $3 local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.sub i32.const 1 @@ -713,11 +713,11 @@ local.get $1 local.get $11 i64.add - local.tee $7 + local.tee $8 local.get $3 i64.sub i64.gt_u - local.get $7 + local.get $8 local.get $3 i64.lt_u select @@ -748,7 +748,7 @@ local.get $0 local.get $4 i32.store16 - local.get $8 + local.get $6 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 8b4765c33e..b6e217bab8 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1648,61 +1648,61 @@ (func $~lib/number/F32#toString (param $0 f32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 f64) + (local $3 f64) + (local $4 i32) block $__inlined_func$~lib/util/number/dtoa local.get $0 f64.promote_f32 - local.tee $4 + local.tee $3 f64.const 0 f64.eq if i32.const 1280 - local.set $2 + local.set $1 br $__inlined_func$~lib/util/number/dtoa end - local.get $4 - local.get $4 + local.get $3 + local.get $3 f64.sub f64.const 0 f64.ne if - local.get $4 - local.get $4 + local.get $3 + local.get $3 f64.ne if i32.const 1312 - local.set $2 + local.set $1 br $__inlined_func$~lib/util/number/dtoa end i32.const 1344 i32.const 1392 - local.get $4 + local.get $3 f64.const 0 f64.lt select - local.set $2 + local.set $1 br $__inlined_func$~lib/util/number/dtoa end i32.const 56 i32.const 1 call $~lib/rt/stub/__alloc - local.tee $2 - local.get $4 - call $~lib/util/number/dtoa_core local.tee $1 + local.get $3 + call $~lib/util/number/dtoa_core + local.tee $2 i32.const 28 i32.eq br_if $__inlined_func$~lib/util/number/dtoa - local.get $2 local.get $1 - call $~lib/string/String#substring local.get $2 + call $~lib/string/String#substring + local.get $1 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $2 + local.get $1 select i32.eqz if @@ -1713,10 +1713,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 16 i32.sub - local.tee $3 + local.tee $4 i32.load offset=4 i32.const 1 i32.ne @@ -1729,18 +1729,18 @@ unreachable end global.get $~lib/rt/stub/offset - local.get $2 - local.get $3 + local.get $1 + local.get $4 i32.load i32.add i32.eq if - local.get $3 + local.get $4 global.set $~lib/rt/stub/offset end - local.set $2 + local.set $1 end - local.get $2 + local.get $1 ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 388ca99de4..da400a40fb 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -23,26 +23,26 @@ (local $4 i32) (local $5 i32) i32.const 42 - local.set $3 + local.set $1 i32.const 2 - local.set $5 + local.set $4 global.get $~lib/rt/stub/offset i32.const 16 i32.add - local.tee $4 + local.tee $0 i32.const 16 i32.add - local.tee $0 + local.tee $3 memory.size - local.tee $1 + local.tee $2 i32.const 16 i32.shl - local.tee $2 + local.tee $5 i32.gt_u if - local.get $1 - local.get $0 local.get $2 + local.get $3 + local.get $5 i32.sub i32.const 65535 i32.add @@ -50,16 +50,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $1 + local.tee $5 local.get $2 + local.get $5 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -68,47 +68,47 @@ end end end - local.get $0 + local.get $3 global.set $~lib/rt/stub/offset - local.get $4 + local.get $0 i32.const 16 i32.sub - local.tee $0 + local.tee $3 i32.const 16 i32.store - local.get $0 + local.get $3 i32.const 1 i32.store offset=4 - local.get $0 + local.get $3 i32.const 1 i32.store offset=8 - local.get $0 + local.get $3 i32.const 4 i32.store offset=12 - local.get $4 - local.set $0 + local.get $0 + local.set $3 loop $do-continue|0 - local.get $3 + local.get $1 i32.const 10 i32.div_u - local.get $0 - local.get $5 + local.get $3 + local.get $4 i32.const 1 i32.sub - local.tee $5 + local.tee $4 i32.const 1 i32.shl i32.add - local.get $3 + local.get $1 i32.const 10 i32.rem_u i32.const 48 i32.add i32.store16 - local.tee $3 + local.tee $1 br_if $do-continue|0 end - local.get $4 + local.get $0 ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 536bc64274..07f6d62705 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -132,7 +132,6 @@ i32.sub local.set $0 end - local.get $2 local.get $0 i32.const 10 i32.ge_u @@ -173,6 +172,7 @@ i32.const 100000 i32.lt_u select + local.get $2 i32.add local.tee $3 i32.const 1 diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 6b15026f34..1af71cbcc4 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -225,7 +225,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -245,35 +245,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -283,12 +283,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -296,7 +296,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -315,42 +315,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -365,12 +367,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -380,38 +382,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -429,7 +431,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -438,21 +440,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -479,7 +481,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -696,23 +698,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1334,8 +1335,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 i64) - (local $8 i32) + (local $7 i32) + (local $8 i64) (local $9 i64) (local $10 i32) (local $11 i64) @@ -1357,13 +1358,13 @@ i64.sub local.tee $12 i64.and - local.set $7 + local.set $8 local.get $3 local.get $10 i64.extend_i32_s i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $7 call $~lib/util/number/decimalCount32 local.set $4 loop $while-continue|0 @@ -1391,111 +1392,111 @@ i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case10|1 end - local.get $6 + local.get $7 i32.const 1000000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 1000000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 100000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 100000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 10000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 10000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 1000000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 1000000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 100000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 100000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 10000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 10000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 1000 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 1000 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 100 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 100 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 i32.const 10 i32.div_u local.set $2 - local.get $6 + local.get $7 i32.const 10 i32.rem_u - local.set $6 + local.set $7 br $break|1 end - local.get $6 + local.get $7 local.set $2 i32.const 0 - local.set $6 + local.set $7 br $break|1 end i32.const 0 local.set $2 end local.get $2 - local.get $8 + local.get $6 i32.or if local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.shl i32.add @@ -1505,17 +1506,17 @@ i32.const 48 i32.add i32.store16 - local.get $8 + local.get $6 i32.const 1 i32.add - local.set $8 + local.set $6 end local.get $4 i32.const 1 i32.sub local.set $4 + local.get $8 local.get $7 - local.get $6 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -1540,7 +1541,7 @@ i64.shl local.set $3 local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.sub i32.const 1 @@ -1557,11 +1558,11 @@ local.get $1 local.get $3 i64.add - local.tee $7 + local.tee $8 local.get $9 i64.sub i64.gt_u - local.get $7 + local.get $8 local.get $9 i64.lt_u select @@ -1592,7 +1593,7 @@ local.get $0 local.get $4 i32.store16 - local.get $8 + local.get $6 return end br $while-continue|0 @@ -1606,35 +1607,35 @@ i64.const 10 i64.mul local.set $5 - local.get $7 + local.get $8 i64.const 10 i64.mul local.tee $3 local.get $1 i64.shr_u - local.tee $7 - local.get $8 + local.tee $8 + local.get $6 i64.extend_i32_s i64.or i64.const 0 i64.ne if local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.shl i32.add - local.get $7 + local.get $8 i32.wrap_i64 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 - local.get $8 + local.get $6 i32.const 1 i32.add - local.set $8 + local.set $6 end local.get $4 i32.const 1 @@ -1643,7 +1644,7 @@ local.get $3 local.get $12 i64.and - local.tee $7 + local.tee $8 local.get $5 i64.ge_u br_if $while-continue|4 @@ -1652,7 +1653,7 @@ global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $7 + local.get $8 local.set $1 local.get $9 i32.const 0 @@ -1666,7 +1667,7 @@ i64.mul local.set $3 local.get $0 - local.get $8 + local.get $6 i32.const 1 i32.sub i32.const 1 @@ -1683,11 +1684,11 @@ local.get $1 local.get $11 i64.add - local.tee $7 + local.tee $8 local.get $3 i64.sub i64.gt_u - local.get $7 + local.get $8 local.get $3 i64.lt_u select @@ -1718,7 +1719,7 @@ local.get $0 local.get $4 i32.store16 - local.get $8 + local.get $6 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 43d7c41799..1a6b1e62cd 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -137,7 +137,6 @@ i32.sub local.set $0 end - local.get $2 local.get $0 i32.const 10 i32.ge_u @@ -178,6 +177,7 @@ i32.const 100000 i32.lt_u select + local.get $2 i32.add local.tee $3 i32.const 1 diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 2ad78db6e5..d11b808cd8 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -229,7 +229,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -249,35 +249,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -287,12 +287,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -300,7 +300,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -319,42 +319,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -369,12 +371,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -384,38 +386,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -433,7 +435,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -442,21 +444,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -483,7 +485,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -724,23 +726,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1795,10 +1796,10 @@ i32.const 12 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 + local.tee $1 i32.const 12 call $~lib/memory/memory.fill - local.get $2 + local.get $1 local.tee $0 local.get $3 i32.load @@ -1815,7 +1816,7 @@ local.get $0 i32.store local.get $3 - local.get $2 + local.get $1 i32.store offset=4 local.get $3 i32.const 12 @@ -1829,7 +1830,7 @@ call $~lib/array/Array#push local.get $3 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.lt_s if @@ -1842,17 +1843,17 @@ end local.get $3 i32.load offset=4 - local.get $2 + local.get $1 i32.const 1 i32.sub - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load drop local.get $3 - local.get $2 + local.get $1 i32.store offset=12 local.get $3 call $~lib/rt/pure/__release @@ -1875,10 +1876,10 @@ i32.const 0 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 + local.tee $1 i32.const 0 call $~lib/memory/memory.fill - local.get $2 + local.get $1 local.tee $0 local.get $3 i32.load @@ -1895,7 +1896,7 @@ local.get $0 i32.store local.get $3 - local.get $2 + local.get $1 i32.store offset=4 local.get $3 i32.const 0 @@ -1905,7 +1906,7 @@ i32.store offset=12 local.get $3 loop $for-loop|0 - local.get $1 + local.get $2 i32.const 10 i32.lt_s if @@ -1928,10 +1929,10 @@ i32.const 0 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 + local.tee $1 i32.const 0 call $~lib/memory/memory.fill - local.get $2 + local.get $1 local.tee $0 local.get $3 i32.load @@ -1948,7 +1949,7 @@ local.get $0 i32.store local.get $3 - local.get $2 + local.get $1 i32.store offset=4 local.get $3 i32.const 0 @@ -1966,14 +1967,14 @@ local.get $3 local.get $3 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.add local.tee $5 call $~lib/array/ensureSize local.get $3 i32.load offset=4 - local.get $2 + local.get $1 i32.const 2 i32.shl i32.add @@ -1994,10 +1995,10 @@ end local.get $3 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|0 end end @@ -2005,12 +2006,12 @@ i32.const 1360 i32.const 1392 call $~lib/string/String.__concat - local.tee $1 + local.tee $2 call $~lib/rt/pure/__retain local.tee $3 i32.const 1456 call $~lib/string/String.__concat - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -2019,7 +2020,7 @@ i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 i32.const 0 i32.store i32.const 4 @@ -2031,8 +2032,8 @@ i32.store local.get $3 local.tee $0 - local.get $2 - local.tee $1 + local.get $1 + local.tee $2 i32.load local.tee $4 i32.ne @@ -2043,63 +2044,63 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $1 + local.get $2 local.get $0 i32.store - local.get $1 + local.get $2 local.set $0 local.get $3 - local.tee $1 + local.tee $2 local.get $0 i32.load local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 + local.set $2 local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.tee $1 + local.tee $2 local.get $3 local.tee $0 i32.load local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 + local.set $2 local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 - i32.store local.get $2 - local.tee $1 + i32.store + local.get $1 + local.tee $2 local.get $0 i32.load local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 + local.set $2 local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $3 - local.get $2 - local.tee $1 + local.get $1 + local.tee $2 i32.load local.tee $4 i32.ne @@ -2110,25 +2111,25 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $1 + local.get $2 local.get $0 i32.store - local.get $2 + local.get $1 local.get $3 i32.load local.tee $0 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 + local.set $2 local.get $0 call $~lib/rt/pure/__release end local.get $3 - local.get $1 - i32.store local.get $2 + i32.store + local.get $1 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -2416,27 +2417,27 @@ (local $4 i32) (local $5 i32) global.get $~lib/rt/pure/ROOTS - local.tee $0 - local.tee $4 - local.set $3 + local.tee $1 + local.tee $3 + local.set $4 global.get $~lib/rt/pure/CUR - local.set $1 + local.set $0 loop $for-loop|0 - local.get $3 - local.get $1 + local.get $4 + local.get $0 i32.lt_u if - local.get $3 + local.get $4 i32.load - local.tee $2 - i32.load offset=4 local.tee $5 + i32.load offset=4 + local.tee $2 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $2 i32.const 268435455 i32.and i32.const 0 @@ -2445,88 +2446,88 @@ i32.const 0 end if - local.get $2 + local.get $5 call $~lib/rt/pure/markGray - local.get $4 - local.get $2 + local.get $3 + local.get $5 i32.store - local.get $4 + local.get $3 i32.const 4 i32.add - local.set $4 + local.set $3 else i32.const 0 - local.get $5 + local.get $2 i32.const 268435455 i32.and i32.eqz - local.get $5 + local.get $2 i32.const 1879048192 i32.and select if global.get $~lib/rt/tlsf/ROOT - local.get $2 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $2 local.get $5 + local.get $2 i32.const 2147483647 i32.and i32.store offset=4 end end - local.get $3 + local.get $4 i32.const 4 i32.add - local.set $3 + local.set $4 br $for-loop|0 end end - local.get $4 + local.get $3 global.set $~lib/rt/pure/CUR - local.get $0 - local.set $1 + local.get $1 + local.set $0 loop $for-loop|1 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_u if - local.get $1 + local.get $0 i32.load call $~lib/rt/pure/scan - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end - local.get $0 - local.set $1 + local.get $1 + local.set $0 loop $for-loop|2 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_u if - local.get $1 + local.get $0 i32.load - local.tee $5 - local.get $5 + local.tee $2 + local.get $2 i32.load offset=4 i32.const 2147483647 i32.and i32.store offset=4 - local.get $5 + local.get $2 call $~lib/rt/pure/collectWhite - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 br $for-loop|2 end end - local.get $0 + local.get $1 global.set $~lib/rt/pure/CUR ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) diff --git a/tests/compiler/retain-return.optimized.wat b/tests/compiler/retain-return.optimized.wat index a9774a845d..170a22f37f 100644 --- a/tests/compiler/retain-return.optimized.wat +++ b/tests/compiler/retain-return.optimized.wat @@ -199,7 +199,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -219,35 +219,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -257,12 +257,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -270,7 +270,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -289,42 +289,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -339,12 +341,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -354,38 +356,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -403,7 +405,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -412,21 +414,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -453,7 +455,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index 8f08ee0a8f..f2717b2010 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -227,7 +227,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -247,35 +247,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -285,12 +285,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -298,7 +298,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -317,42 +317,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -367,12 +369,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -382,38 +384,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -431,7 +433,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -440,21 +442,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -481,7 +483,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -698,23 +700,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1289,14 +1290,14 @@ unreachable end global.get $rt/finalize/expectedWriteIndex - local.tee $2 + local.tee $1 i32.const 1 i32.add global.set $rt/finalize/expectedWriteIndex - local.get $2 - local.tee $1 - global.get $rt/finalize/expected + local.get $1 local.tee $2 + global.get $rt/finalize/expected + local.tee $1 call $~lib/staticarray/StaticArray#get:length i32.ge_u if @@ -1307,8 +1308,8 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.const 2 i32.shl i32.add @@ -1328,7 +1329,6 @@ call $~lib/memory/memory.fill local.get $0 call $~lib/rt/pure/__retain - local.tee $0 global.set $rt/finalize/expected i32.const 16 i32.const 4 @@ -2064,27 +2064,27 @@ (local $4 i32) (local $5 i32) global.get $~lib/rt/pure/ROOTS - local.tee $0 - local.tee $4 - local.set $3 + local.tee $1 + local.tee $3 + local.set $4 global.get $~lib/rt/pure/CUR - local.set $1 + local.set $0 loop $for-loop|0 - local.get $3 - local.get $1 + local.get $4 + local.get $0 i32.lt_u if - local.get $3 + local.get $4 i32.load - local.tee $2 - i32.load offset=4 local.tee $5 + i32.load offset=4 + local.tee $2 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $2 i32.const 268435455 i32.and i32.const 0 @@ -2093,87 +2093,87 @@ i32.const 0 end if - local.get $2 + local.get $5 call $~lib/rt/pure/markGray - local.get $4 - local.get $2 + local.get $3 + local.get $5 i32.store - local.get $4 + local.get $3 i32.const 4 i32.add - local.set $4 + local.set $3 else i32.const 0 - local.get $5 + local.get $2 i32.const 268435455 i32.and i32.eqz - local.get $5 + local.get $2 i32.const 1879048192 i32.and select if - local.get $2 + local.get $5 call $~lib/rt/pure/finalize else - local.get $2 local.get $5 + local.get $2 i32.const 2147483647 i32.and i32.store offset=4 end end - local.get $3 + local.get $4 i32.const 4 i32.add - local.set $3 + local.set $4 br $for-loop|0 end end - local.get $4 + local.get $3 global.set $~lib/rt/pure/CUR - local.get $0 - local.set $1 + local.get $1 + local.set $0 loop $for-loop|1 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_u if - local.get $1 + local.get $0 i32.load call $~lib/rt/pure/scan - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end - local.get $0 - local.set $1 + local.get $1 + local.set $0 loop $for-loop|2 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_u if - local.get $1 + local.get $0 i32.load - local.tee $5 - local.get $5 + local.tee $2 + local.get $2 i32.load offset=4 i32.const 2147483647 i32.and i32.store offset=4 - local.get $5 + local.get $2 call $~lib/rt/pure/collectWhite - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 br $for-loop|2 end end - local.get $0 + local.get $1 global.set $~lib/rt/pure/CUR ) (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat index 33b47938f0..4b565d853b 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/runtime-full.optimized.wat @@ -205,7 +205,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -225,35 +225,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -263,12 +263,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -276,7 +276,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -295,42 +295,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -345,12 +347,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -360,38 +362,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -409,7 +411,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -418,21 +420,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -459,7 +461,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -676,23 +678,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 00411bd7b7..b585dc8b7d 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -257,7 +257,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -277,35 +277,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -315,12 +315,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -328,7 +328,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -347,42 +347,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -397,12 +399,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -412,38 +414,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -461,7 +463,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -470,21 +472,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -511,7 +513,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -728,23 +730,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 5db85dcee0..0ff2b82d50 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -532,7 +532,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -552,35 +552,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -590,12 +590,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -603,7 +603,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -622,42 +622,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -672,12 +674,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -687,38 +689,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -736,7 +738,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -745,21 +747,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -786,7 +788,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -1027,23 +1029,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1602,16 +1603,16 @@ i32.const 3 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.const 0 i32.store - local.get $3 + local.get $5 i32.const 0 i32.store offset=4 - local.get $3 + local.get $5 i32.const 0 i32.store offset=8 - local.get $3 + local.get $5 i32.const 0 i32.store offset=12 local.get $0 @@ -1631,37 +1632,37 @@ local.tee $4 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $1 + local.tee $2 i32.const 0 local.get $4 call $~lib/memory/memory.fill - local.get $1 - local.set $2 - local.get $1 - local.get $3 + local.get $2 + local.set $1 + local.get $2 + local.get $5 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $5 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end - local.get $3 - local.get $2 - i32.store - local.get $3 + local.get $5 local.get $1 + i32.store + local.get $5 + local.get $2 i32.store offset=4 - local.get $3 + local.get $5 local.get $4 i32.store offset=8 - local.get $3 + local.get $5 local.get $0 i32.store offset=12 - local.get $3 + local.get $5 ) (func $~lib/array/Array.isArray<~lib/array/Array | null> (param $0 i32) (result i32) local.get $0 @@ -4134,66 +4135,66 @@ (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 f32) - (local $6 i32) + (local $6 f32) loop $for-loop|0 - local.get $6 + local.get $4 local.get $1 i32.lt_s if local.get $0 - local.get $6 + local.get $4 i32.const 2 i32.shl i32.add f32.load local.set $5 - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $3 + local.set $2 loop $while-continue|1 - local.get $3 + local.get $2 i32.const 0 i32.ge_s if block $while-break|1 local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.set $4 + local.set $6 i32.const 2 global.set $~argumentsLength local.get $5 - local.get $4 + local.get $6 call $~lib/util/sort/COMPARATOR~anonymous|0 i32.const 0 i32.ge_s br_if $while-break|1 - local.get $3 - local.tee $2 + local.get $2 + local.tee $3 i32.const 1 i32.sub - local.set $3 + local.set $2 local.get $0 - local.get $2 + local.get $3 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 f32.store br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.add i32.const 2 @@ -4201,10 +4202,10 @@ i32.add local.get $5 f32.store - local.get $6 + local.get $4 i32.const 1 i32.add - local.set $6 + local.set $4 br $for-loop|0 end end @@ -4577,66 +4578,66 @@ (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 f64) - (local $6 i32) + (local $6 f64) loop $for-loop|0 - local.get $6 + local.get $4 local.get $1 i32.lt_s if local.get $0 - local.get $6 + local.get $4 i32.const 3 i32.shl i32.add f64.load local.set $5 - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $3 + local.set $2 loop $while-continue|1 - local.get $3 + local.get $2 i32.const 0 i32.ge_s if block $while-break|1 local.get $0 - local.get $3 + local.get $2 i32.const 3 i32.shl i32.add f64.load - local.set $4 + local.set $6 i32.const 2 global.set $~argumentsLength local.get $5 - local.get $4 + local.get $6 call $~lib/util/sort/COMPARATOR~anonymous|0 i32.const 0 i32.ge_s br_if $while-break|1 - local.get $3 - local.tee $2 + local.get $2 + local.tee $3 i32.const 1 i32.sub - local.set $3 + local.set $2 local.get $0 - local.get $2 + local.get $3 i32.const 1 i32.add i32.const 3 i32.shl i32.add - local.get $4 + local.get $6 f64.store br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.add i32.const 3 @@ -4644,10 +4645,10 @@ i32.add local.get $5 f64.store - local.get $6 + local.get $4 i32.const 1 i32.add - local.set $6 + local.set $4 br $for-loop|0 end end @@ -5045,63 +5046,63 @@ (local $6 i32) (local $7 i32) loop $for-loop|0 - local.get $7 + local.get $5 local.get $1 i32.lt_s if local.get $0 - local.get $7 + local.get $5 i32.const 2 i32.shl i32.add i32.load local.set $6 - local.get $7 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $3 loop $while-continue|1 - local.get $4 + local.get $3 i32.const 0 i32.ge_s if block $while-break|1 local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $6 - local.get $5 + local.get $7 local.get $2 call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 - local.get $4 - local.tee $3 + local.get $3 + local.tee $4 i32.const 1 i32.sub - local.set $4 + local.set $3 local.get $0 - local.get $3 + local.get $4 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $5 + local.get $7 i32.store br $while-continue|1 end end end local.get $0 - local.get $4 + local.get $3 i32.const 1 i32.add i32.const 2 @@ -5109,10 +5110,10 @@ i32.add local.get $6 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|0 end end @@ -5384,7 +5385,7 @@ (local $4 i32) local.get $0 i32.load offset=12 - local.tee $3 + local.tee $2 i32.const 1 i32.le_s if @@ -5395,48 +5396,48 @@ local.get $0 i32.load offset=4 local.set $4 - local.get $3 + local.get $2 i32.const 2 i32.eq if local.get $4 i32.load offset=4 - local.set $3 + local.set $2 local.get $4 i32.load - local.set $2 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 local.get $2 + local.get $3 local.get $1 call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if local.get $4 - local.get $2 + local.get $3 i32.store offset=4 local.get $4 - local.get $3 + local.get $2 i32.store end local.get $0 call $~lib/rt/pure/__retain return end - local.get $3 - local.tee $2 + local.get $2 + local.tee $3 i32.const 256 i32.lt_s if local.get $4 - local.get $2 + local.get $3 local.get $1 call $~lib/util/sort/insertionSort else local.get $4 - local.get $2 + local.get $3 local.get $1 call $~lib/util/sort/weakHeapSort end @@ -5722,49 +5723,49 @@ i32.const 12 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $2 + local.tee $4 i32.const 0 i32.store - local.get $2 + local.get $4 i32.const 0 i32.store offset=4 - local.get $2 + local.get $4 i32.const 0 i32.store offset=8 - local.get $2 + local.get $4 i32.const 0 i32.store offset=12 i32.const 8 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $0 + local.tee $1 i32.const 0 i32.const 8 call $~lib/memory/memory.fill - local.get $0 - local.set $1 - local.get $0 - local.get $2 + local.get $1 + local.set $0 + local.get $1 + local.get $4 i32.load - local.tee $4 + local.tee $2 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 - local.get $4 + local.set $0 + local.get $2 call $~lib/rt/pure/__release end - local.get $2 - local.get $1 - i32.store - local.get $2 + local.get $4 local.get $0 + i32.store + local.get $4 + local.get $1 i32.store offset=4 - local.get $2 + local.get $4 i32.const 8 i32.store offset=8 - local.get $2 + local.get $4 i32.const 2 i32.store offset=12 loop $for-loop|0 @@ -5774,17 +5775,17 @@ if i32.const 1 call $~lib/array/Array#constructor - local.tee $0 + local.tee $1 i32.const 0 i32.const 1 local.get $3 i32.sub call $~lib/array/Array#__set - local.get $2 + local.get $4 local.get $3 - local.get $0 + local.get $1 call $~lib/array/Array<~lib/array/Array>#__set - local.get $0 + local.get $1 call $~lib/rt/pure/__release local.get $3 i32.const 1 @@ -5793,7 +5794,7 @@ br $for-loop|0 end end - local.get $2 + local.get $4 ) (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -6055,49 +6056,49 @@ i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $2 + local.tee $4 i32.const 0 i32.store - local.get $2 + local.get $4 i32.const 0 i32.store offset=4 - local.get $2 + local.get $4 i32.const 0 i32.store offset=8 - local.get $2 + local.get $4 i32.const 0 i32.store offset=12 i32.const 2048 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $0 + local.tee $1 i32.const 0 i32.const 2048 call $~lib/memory/memory.fill - local.get $0 - local.set $1 - local.get $0 - local.get $2 + local.get $1 + local.set $0 + local.get $1 + local.get $4 i32.load - local.tee $4 + local.tee $2 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 - local.get $4 + local.set $0 + local.get $2 call $~lib/rt/pure/__release end - local.get $2 - local.get $1 - i32.store - local.get $2 + local.get $4 local.get $0 + i32.store + local.get $4 + local.get $1 i32.store offset=4 - local.get $2 + local.get $4 i32.const 2048 i32.store offset=8 - local.get $2 + local.get $4 i32.const 512 i32.store offset=12 loop $for-loop|0 @@ -6109,16 +6110,16 @@ i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 511 local.get $3 i32.sub i32.store - local.get $2 + local.get $4 local.get $3 - local.get $0 + local.get $1 call $~lib/array/Array<~lib/array/Array>#__set - local.get $0 + local.get $1 call $~lib/rt/pure/__release local.get $3 i32.const 1 @@ -6127,7 +6128,7 @@ br $for-loop|0 end end - local.get $2 + local.get $4 ) (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -6504,35 +6505,35 @@ local.get $1 i32.const 2 i32.shl - local.tee $5 + local.tee $4 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $3 + local.tee $2 i32.const 0 - local.get $5 + local.get $4 call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 + local.get $2 + local.set $3 + local.get $2 local.get $0 i32.load - local.tee $4 + local.tee $5 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 $5 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $3 i32.store local.get $0 - local.get $3 + local.get $2 i32.store offset=4 local.get $0 - local.get $5 + local.get $4 i32.store offset=8 local.get $0 local.get $1 @@ -8510,22 +8511,22 @@ if local.get $0 i32.load - local.tee $4 + local.tee $3 if - local.get $4 + local.get $3 call $~lib/rt/pure/__retain - local.set $4 + local.set $3 end - local.get $4 + local.get $3 if (result i32) - local.get $4 + local.get $3 call $~lib/rt/pure/__retain else i32.const 6112 end local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release return end @@ -8535,30 +8536,30 @@ call $~lib/string/String#get:length local.set $8 loop $for-loop|0 - local.get $4 + local.get $3 local.get $6 i32.lt_s if - local.get $3 + local.get $4 local.tee $2 local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 + local.set $4 local.get $2 call $~lib/rt/pure/__release end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain local.tee $2 local.get $1 @@ -8601,10 +8602,10 @@ local.get $7 call $~lib/rt/pure/__release end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end @@ -8615,13 +8616,13 @@ i32.add i32.load local.tee $2 - local.get $3 + local.get $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $2 @@ -8633,20 +8634,20 @@ local.get $0 call $~lib/string/String.__concat local.tee $0 - local.tee $3 + local.tee $4 local.get $1 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $3 + local.get $4 local.set $1 end local.get $5 @@ -8668,16 +8669,17 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - local.get $2 + i32.const 6352 call $~lib/rt/pure/__retain - local.set $6 + local.set $8 local.get $1 i32.const 1 i32.sub @@ -8685,7 +8687,7 @@ i32.const 0 i32.lt_s if - local.get $6 + local.get $8 call $~lib/rt/pure/__release i32.const 6112 return @@ -8695,141 +8697,137 @@ if local.get $0 i32.load - local.tee $4 + local.tee $2 if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 end - local.get $6 + local.get $8 call $~lib/rt/pure/__release - local.get $4 + local.get $2 call $~lib/rt/pure/__release i32.const 8320 i32.const 6112 - local.get $4 + local.get $2 select return end i32.const 6112 local.set $1 - local.get $6 + local.get $8 call $~lib/string/String#get:length - local.set $8 + local.set $5 loop $for-loop|0 - local.get $4 + local.get $2 local.get $7 i32.lt_s if - local.get $3 - local.tee $2 - local.get $0 local.get $4 + local.tee $3 + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end - local.get $3 + local.get $4 if local.get $1 - local.tee $5 + local.get $1 i32.const 8320 call $~lib/string/String.__concat - local.tee $1 - local.tee $2 - local.get $5 + local.tee $6 + local.tee $3 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $5 + local.set $3 + local.get $1 call $~lib/rt/pure/__release end - local.get $1 + local.get $6 call $~lib/rt/pure/__release - local.get $2 + local.get $3 local.set $1 end - local.get $8 + local.get $5 if local.get $1 - local.tee $2 - local.get $6 + local.tee $3 + local.get $8 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 local.tee $1 - local.get $2 + local.get $3 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $3 call $~lib/rt/pure/__release end - local.get $5 + local.get $6 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end - local.get $3 - local.tee $4 + local.get $4 local.get $0 local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $3 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 $2 - local.tee $0 + local.get $3 if local.get $1 - local.tee $2 + local.get $1 i32.const 8320 call $~lib/string/String.__concat + local.tee $0 local.tee $4 - local.tee $3 - local.get $2 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $4 + local.get $1 call $~lib/rt/pure/__release end - local.get $4 + local.get $0 call $~lib/rt/pure/__release - local.get $3 + local.get $4 local.set $1 end - local.get $6 + local.get $8 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -8838,7 +8836,6 @@ i32.load offset=4 local.get $0 i32.load offset=12 - i32.const 6352 call $~lib/util/string/joinReferenceArray i32.const 6352 call $~lib/rt/pure/__release @@ -9714,143 +9711,143 @@ (local $9 i32) i32.const 6352 call $~lib/rt/pure/__retain - local.set $5 + local.set $9 local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $8 i32.const 0 i32.lt_s if - local.get $5 + local.get $9 call $~lib/rt/pure/__release i32.const 6112 return end - local.get $6 + local.get $8 i32.eqz if local.get $0 i32.load - local.tee $4 + local.tee $2 if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 end - local.get $4 + local.get $2 if (result i32) - local.get $4 + local.get $2 i32.const 6352 call $~lib/array/Array#join else i32.const 6112 end - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $4 + local.get $2 call $~lib/rt/pure/__release return end i32.const 6112 local.set $1 - local.get $5 + local.get $9 call $~lib/string/String#get:length - local.set $8 + local.set $6 loop $for-loop|0 - local.get $4 - local.get $6 + local.get $2 + local.get $8 i32.lt_s if - local.get $3 - local.tee $2 - local.get $0 local.get $4 + local.tee $3 + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 i32.const 6352 call $~lib/array/Array#join - local.tee $2 + local.tee $3 local.get $1 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat - local.tee $9 - local.tee $2 + local.tee $5 + local.tee $3 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 local.set $1 end - local.get $8 + local.get $6 if local.get $1 - local.tee $2 - local.get $5 + local.tee $3 + local.get $9 call $~lib/string/String.__concat local.tee $7 local.tee $1 - local.get $2 + local.get $3 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $3 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end - local.get $3 + local.get $4 local.get $0 - local.get $6 + local.get $8 i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $3 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 if - local.get $2 + local.get $3 i32.const 6352 call $~lib/array/Array#join local.tee $0 @@ -9859,24 +9856,24 @@ local.get $0 call $~lib/string/String.__concat local.tee $0 - local.tee $3 + local.tee $4 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $3 + local.get $4 local.set $1 end - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -10057,143 +10054,143 @@ (local $9 i32) i32.const 6352 call $~lib/rt/pure/__retain - local.set $5 + local.set $9 local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $8 i32.const 0 i32.lt_s if - local.get $5 + local.get $9 call $~lib/rt/pure/__release i32.const 6112 return end - local.get $6 + local.get $8 i32.eqz if local.get $0 i32.load - local.tee $4 + local.tee $2 if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 end - local.get $4 + local.get $2 if (result i32) - local.get $4 + local.get $2 i32.const 6352 call $~lib/array/Array#join else i32.const 6112 end - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $4 + local.get $2 call $~lib/rt/pure/__release return end i32.const 6112 local.set $1 - local.get $5 + local.get $9 call $~lib/string/String#get:length - local.set $8 + local.set $6 loop $for-loop|0 - local.get $4 - local.get $6 + local.get $2 + local.get $8 i32.lt_s if - local.get $3 - local.tee $2 - local.get $0 local.get $4 + local.tee $3 + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 i32.const 6352 call $~lib/array/Array#join - local.tee $2 + local.tee $3 local.get $1 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat - local.tee $9 - local.tee $2 + local.tee $5 + local.tee $3 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 local.set $1 end - local.get $8 + local.get $6 if local.get $1 - local.tee $2 - local.get $5 + local.tee $3 + local.get $9 call $~lib/string/String.__concat local.tee $7 local.tee $1 - local.get $2 + local.get $3 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $3 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end - local.get $3 + local.get $4 local.get $0 - local.get $6 + local.get $8 i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $3 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 if - local.get $2 + local.get $3 i32.const 6352 call $~lib/array/Array#join local.tee $0 @@ -10202,24 +10199,24 @@ local.get $0 call $~lib/string/String.__concat local.tee $0 - local.tee $3 + local.tee $4 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $3 + local.get $4 local.set $1 end - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -10228,7 +10225,8 @@ i32.const 6352 call $~lib/array/Array#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10236,171 +10234,171 @@ (local $7 i32) (local $8 i32) (local $9 i32) - local.get $2 + i32.const 6352 call $~lib/rt/pure/__retain - local.set $5 + local.set $9 local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $8 i32.const 0 i32.lt_s if - local.get $5 + local.get $9 call $~lib/rt/pure/__release i32.const 6112 return end - local.get $6 + local.get $8 i32.eqz if local.get $0 i32.load - local.tee $4 + local.tee $2 if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 end - local.get $4 + local.get $2 if (result i32) - local.get $4 + local.get $2 i32.const 6352 call $~lib/array/Array#join else i32.const 6112 end - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $4 + local.get $2 call $~lib/rt/pure/__release return end i32.const 6112 local.set $1 - local.get $5 + local.get $9 call $~lib/string/String#get:length - local.set $8 + local.set $6 loop $for-loop|0 - local.get $4 - local.get $6 + local.get $2 + local.get $8 i32.lt_s if - local.get $3 - local.tee $2 - local.get $0 local.get $4 + local.tee $3 + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end - local.get $3 + local.get $4 if - local.get $3 + local.get $4 i32.const 6352 call $~lib/array/Array#join - local.tee $2 + local.tee $3 local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 local.get $1 + local.get $3 + call $~lib/string/String.__concat + local.tee $5 + local.tee $3 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 local.set $1 end - local.get $8 + local.get $6 if local.get $1 - local.tee $2 - local.get $5 + local.tee $3 + local.get $9 call $~lib/string/String.__concat local.tee $7 local.tee $1 - local.get $2 + local.get $3 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $3 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end + local.get $4 local.get $0 - local.get $6 + local.get $8 i32.const 2 i32.shl i32.add i32.load - local.tee $2 - local.get $3 + local.tee $3 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 if - local.get $2 + local.get $3 i32.const 6352 call $~lib/array/Array#join local.tee $0 local.get $1 + local.get $1 local.get $0 call $~lib/string/String.__concat local.tee $0 - local.tee $3 - local.get $1 + local.tee $4 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release end call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $3 + local.get $4 local.set $1 end - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -10409,7 +10407,6 @@ i32.load offset=4 local.get $0 i32.load offset=12 - i32.const 6352 call $~lib/util/string/joinReferenceArray<~lib/array/Array> i32.const 6352 call $~lib/rt/pure/__release @@ -10425,166 +10422,166 @@ (local $9 i32) i32.const 6352 call $~lib/rt/pure/__retain - local.set $5 + local.set $9 local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $8 i32.const 0 i32.lt_s if - local.get $5 + local.get $9 call $~lib/rt/pure/__release i32.const 6112 return end - local.get $6 + local.get $8 i32.eqz if local.get $0 i32.load - local.tee $4 + local.tee $2 if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 end - local.get $4 + local.get $2 if (result i32) - local.get $4 + local.get $2 call $~lib/array/Array<~lib/array/Array>#toString else i32.const 6112 end - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $4 + local.get $2 call $~lib/rt/pure/__release return end i32.const 6112 local.set $1 - local.get $5 + local.get $9 call $~lib/string/String#get:length - local.set $8 + local.set $6 loop $for-loop|0 - local.get $4 - local.get $6 + local.get $2 + local.get $8 i32.lt_s if - local.get $3 - local.tee $2 - local.get $0 local.get $4 + local.tee $3 + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $2 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end - local.get $3 + local.get $4 if local.get $1 local.get $1 - local.get $3 + local.get $4 call $~lib/array/Array<~lib/array/Array>#toString local.tee $7 call $~lib/string/String.__concat - local.tee $9 - local.tee $2 + local.tee $5 + local.tee $3 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release - local.get $9 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 local.set $1 end - local.get $8 + local.get $6 if local.get $1 - local.tee $2 - local.get $5 + local.tee $3 + local.get $9 call $~lib/string/String.__concat local.tee $7 local.tee $1 - local.get $2 + local.get $3 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $3 call $~lib/rt/pure/__release end local.get $7 call $~lib/rt/pure/__release end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end - local.get $3 + local.get $4 local.get $0 - local.get $6 + local.get $8 i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $3 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 if local.get $1 local.get $1 - local.get $2 + local.get $3 call $~lib/array/Array<~lib/array/Array>#toString local.tee $0 call $~lib/string/String.__concat + local.tee $2 local.tee $4 - local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release end local.get $0 call $~lib/rt/pure/__release - local.get $4 + local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 local.set $1 end - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -10602,12 +10599,12 @@ i32.load offset=4 local.set $6 loop $for-loop|0 - local.get $1 + local.get $2 local.get $5 i32.lt_s if local.get $6 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add @@ -10619,72 +10616,72 @@ else i32.const 0 end - local.get $2 + local.get $3 i32.add - local.set $2 - local.get $1 + local.set $3 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $3 i32.const 2 i32.shl - local.tee $1 + local.tee $2 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $3 + local.set $4 i32.const 16 i32.const 3 call $~lib/rt/tlsf/__alloc local.tee $0 - local.get $2 + local.get $3 i32.store offset=12 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 local.get $0 - local.get $3 + local.get $4 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 call $~lib/rt/pure/__retain i32.store i32.const 0 - local.set $1 + local.set $2 loop $for-loop|1 - local.get $1 + local.get $2 local.get $5 i32.lt_s if local.get $6 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $3 if - local.get $3 + local.get $1 local.get $4 i32.add - local.get $2 + local.get $3 i32.load offset=4 - local.get $2 + local.get $3 i32.load offset=8 - local.tee $2 + local.tee $3 call $~lib/memory/memory.copy - local.get $2 - local.get $4 + local.get $1 + local.get $3 i32.add - local.set $4 + local.set $1 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|1 end end @@ -10706,12 +10703,12 @@ i32.load offset=4 local.set $7 loop $for-loop|0 - local.get $1 + local.get $2 local.get $6 i32.lt_s if local.get $7 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add @@ -10723,98 +10720,98 @@ else i32.const 0 end - local.get $2 + local.get $3 i32.add - local.set $2 - local.get $1 + local.set $3 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $3 i32.const 2 i32.shl - local.tee $1 + local.tee $2 i32.const 0 call $~lib/rt/tlsf/__alloc local.set $0 i32.const 16 i32.const 15 call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $2 - i32.store offset=12 + local.tee $4 local.get $3 - local.get $1 + i32.store offset=12 + local.get $4 + local.get $2 i32.store offset=8 - local.get $3 + local.get $4 local.get $0 i32.store offset=4 - local.get $3 + local.get $4 local.get $0 call $~lib/rt/pure/__retain i32.store i32.const 0 - local.set $1 + local.set $2 loop $for-loop|1 - local.get $1 + local.get $2 local.get $6 i32.lt_s if local.get $7 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $5 if local.get $0 - local.get $5 + local.get $1 i32.add - local.get $4 + local.get $5 i32.load offset=4 - local.get $4 + local.get $5 i32.load offset=8 - local.tee $4 + local.tee $5 call $~lib/memory/memory.copy - local.get $4 + local.get $1 local.get $5 i32.add - local.set $5 + local.set $1 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|1 end end i32.const 0 - local.set $1 + local.set $2 loop $for-loop|2 - local.get $1 local.get $2 + local.get $3 i32.lt_s if local.get $0 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load call $~lib/rt/pure/__retain drop - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|2 end end - local.get $3 + local.get $4 call $~lib/rt/pure/__retain ) (func $start:std/array @@ -10899,34 +10896,35 @@ i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $2 + local.tee $0 i32.eqz if i32.const 12 i32.const 2 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.set $2 + local.set $0 end - local.get $2 + local.get $0 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 0 i32.store offset=8 i32.const 1 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $1 + local.tee $2 i32.const 0 i32.const 1 call $~lib/memory/memory.fill - local.get $1 - local.tee $0 local.get $2 + local.tee $0 + local.get $1 i32.load local.tee $4 i32.ne @@ -10937,13 +10935,13 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $2 + local.get $1 local.get $0 i32.store - local.get $2 local.get $1 - i32.store offset=4 local.get $2 + i32.store offset=4 + local.get $1 i32.const 1 i32.store offset=8 global.get $std/array/arr @@ -10958,7 +10956,7 @@ unreachable end call $~lib/rt/pure/__release - local.get $2 + local.get $1 call $~lib/rt/pure/__release i32.const 5 i32.const 0 @@ -15970,7 +15968,7 @@ global.set $~argumentsLength block $__inlined_func$std/array/isSorted<~lib/string/String | null> (result i32) i32.const 1 - local.set $2 + local.set $0 local.get $5 call $~lib/rt/pure/__retain local.tee $4 @@ -15978,53 +15976,53 @@ call $~lib/array/Array<~lib/array/Array>#sort local.tee $6 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.load offset=12 local.set $7 loop $for-loop|00 - local.get $2 + local.get $0 local.get $7 i32.lt_s if + local.get $1 local.get $0 - local.get $2 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $1 + local.set $2 + local.get $1 local.get $0 - local.get $2 call $~lib/array/Array#__get local.set $3 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $2 local.get $3 call $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 i32.const 0 i32.gt_s if - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String | null> end - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|00 end end - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 1 end @@ -17099,35 +17097,35 @@ local.get $1 i32.const 2 i32.shl - local.tee $5 + local.tee $4 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $3 + local.tee $2 i32.const 0 - local.get $5 + local.get $4 call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 + local.get $2 + local.set $3 + local.get $2 local.get $0 i32.load - local.tee $4 + local.tee $5 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 $5 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $3 i32.store local.get $0 - local.get $3 + local.get $2 i32.store offset=4 local.get $0 - local.get $5 + local.get $4 i32.store offset=8 local.get $0 local.get $1 @@ -17474,29 +17472,29 @@ local.get $1 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $3 + local.tee $2 i32.const 0 local.get $1 call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 + local.get $2 + local.set $3 + local.get $2 local.get $0 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.get $3 + local.get $2 i32.store offset=4 local.get $0 local.get $1 diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 59e2729028..a9850b2d24 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -219,7 +219,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -239,35 +239,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -277,12 +277,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -290,7 +290,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -309,42 +309,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -359,12 +361,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -374,38 +376,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -423,7 +425,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -432,21 +434,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -473,7 +475,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -690,23 +692,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1585,12 +1586,12 @@ i32.const 8 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $1 + local.tee $0 i32.const 8 call $~lib/memory/memory.fill - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.tee $9 + local.tee $2 i32.const 16 i32.sub i32.load offset=12 @@ -1604,11 +1605,11 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 i32.const 0 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 + local.tee $1 i32.const 16 i32.sub i32.load offset=12 @@ -1622,8 +1623,8 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $9 + local.get $1 + local.get $2 i32.eq if i32.const 0 @@ -1633,13 +1634,13 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 i32.const 1 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 16 i32.sub i32.load offset=12 @@ -1653,13 +1654,13 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 i32.const -1 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 16 i32.sub i32.load offset=12 @@ -1673,13 +1674,13 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 i32.const 1 i32.const 3 call $~lib/arraybuffer/ArrayBuffer#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 16 i32.sub i32.load offset=12 @@ -1693,13 +1694,13 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 i32.const 1 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 16 i32.sub i32.load offset=12 @@ -1713,14 +1714,14 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 i32.const -3 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $1 - local.get $0 - call $~lib/rt/pure/__release + local.set $0 local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.const 16 i32.sub i32.load offset=12 @@ -1734,14 +1735,14 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 i32.const -4 i32.const 42 call $~lib/arraybuffer/ArrayBuffer#slice - 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 16 i32.sub i32.load offset=12 @@ -1755,14 +1756,14 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 i32.const 42 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $7 - local.get $0 + local.set $4 + local.get $1 call $~lib/rt/pure/__release - local.get $7 + local.get $4 i32.const 16 i32.sub i32.load offset=12 @@ -1774,7 +1775,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $4 i32.eqz if i32.const 0 @@ -1784,12 +1785,9 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array | null> (result i32) - i32.const 0 - call $~lib/rt/pure/__release - i32.const 0 - br $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array | null> - end + i32.const 0 + call $~lib/rt/pure/__release + i32.const 0 if i32.const 0 i32.const 1312 @@ -1826,32 +1824,32 @@ call $~lib/rt/pure/__retain i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $6 + local.set $5 i32.const 16 i32.const 3 call $~lib/rt/tlsf/__alloc - local.set $1 + local.set $0 i32.const 8 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $0 + local.tee $1 i32.const 1376 i32.const 8 call $~lib/memory/memory.copy - local.get $1 local.get $0 + local.get $1 call $~lib/rt/pure/__retain i32.store - local.get $1 local.get $0 - i32.store offset=4 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8 i32.store offset=8 - local.get $1 + local.get $0 i32.const 2 i32.store offset=12 - local.get $1 + local.get $0 call $~lib/rt/pure/__retain i32.const 12 i32.const 9 @@ -1859,35 +1857,35 @@ call $~lib/rt/pure/__retain i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $4 - local.get $6 + local.set $7 + local.get $5 i32.load - local.tee $0 + local.tee $1 i32.const 16 i32.sub i32.load offset=12 - local.tee $1 - local.set $3 + local.tee $0 + local.set $8 i32.const 12 i32.const 15 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $8 + local.tee $3 i32.const 0 i32.store - local.get $8 + local.get $3 i32.const 0 i32.store offset=4 - local.get $8 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 1073741808 i32.gt_u - local.get $1 local.get $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 16 i32.sub i32.load offset=12 @@ -1901,41 +1899,41 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.set $0 - local.get $1 - local.get $8 + local.get $0 + local.set $1 + local.get $0 + local.get $3 i32.load - local.tee $2 + local.tee $9 i32.ne if - local.get $0 + local.get $1 call $~lib/rt/pure/__retain - local.set $0 - local.get $2 + local.set $1 + local.get $9 call $~lib/rt/pure/__release end - local.get $8 - local.get $0 - i32.store - local.get $8 + local.get $3 local.get $1 + i32.store + local.get $3 + local.get $0 i32.store offset=4 - local.get $8 local.get $3 + local.get $8 i32.store offset=8 - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.get $9 + local.get $2 call $~lib/rt/pure/__release - local.get $7 + local.get $4 call $~lib/rt/pure/__release - local.get $6 + local.get $5 call $~lib/rt/pure/__release call $~lib/rt/pure/__release - local.get $4 + local.get $7 call $~lib/rt/pure/__release - local.get $8 + local.get $3 call $~lib/rt/pure/__release ) (func $~start diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 287ea4443b..3dc4bc8c3a 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -227,7 +227,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -247,35 +247,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -285,12 +285,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -298,7 +298,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -317,42 +317,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -367,12 +369,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -382,38 +384,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -431,7 +433,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -440,21 +442,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -481,7 +483,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -698,23 +700,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1135,50 +1136,50 @@ i32.const 8 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 + local.tee $1 i32.const 0 i32.store8 - local.get $2 - local.tee $1 + local.get $1 + local.tee $2 i32.const 4 i32.add i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $2 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 0 i32.store8 offset=6 - local.get $1 + local.get $2 i32.const 0 i32.store8 offset=5 - local.get $1 + local.get $2 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 0 i32.store8 offset=4 - local.get $1 + local.get $2 local.get $0 i32.load local.tee $3 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 + local.set $2 local.get $3 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $1 i32.store offset=4 local.get $0 i32.const 8 @@ -1439,13 +1440,12 @@ i32.load16_s local.set $0 local.get $2 - i32.eqz - if + if (result i32) + local.get $0 + else local.get $0 call $~lib/polyfills/bswap - local.set $0 end - local.get $0 ) (func $~lib/dataview/DataView#getInt32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 @@ -1473,13 +1473,12 @@ i32.load local.set $0 local.get $2 - i32.eqz - if + if (result i32) + local.get $0 + else local.get $0 call $~lib/polyfills/bswap - local.set $0 end - local.get $0 ) (func $~lib/dataview/DataView#getInt64 (param $0 i32) (param $1 i32) (result i64) (local $2 i64) @@ -1563,13 +1562,12 @@ i32.load16_u local.set $0 local.get $2 - i32.eqz - if + if (result i32) + local.get $0 + else local.get $0 call $~lib/polyfills/bswap - local.set $0 end - local.get $0 ) (func $~lib/dataview/DataView#getUint32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 @@ -1597,13 +1595,12 @@ i32.load local.set $0 local.get $2 - i32.eqz - if + if (result i32) + local.get $0 + else local.get $0 call $~lib/polyfills/bswap - local.set $0 end - local.get $0 ) (func $~lib/dataview/DataView#getUint64 (param $0 i32) (param $1 i32) (result i64) (local $2 i64) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index ad89e87f5c..90addc1de8 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -226,7 +226,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -246,35 +246,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -284,12 +284,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -297,7 +297,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -316,42 +316,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -366,12 +368,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -381,38 +383,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -430,7 +432,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -439,21 +441,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -480,7 +482,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -721,23 +723,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1303,7 +1304,6 @@ call $~lib/memory/memory.fill local.get $1 call $~lib/rt/pure/__retain - local.tee $0 ) (func $~lib/util/hash/hash8 (param $0 i32) (result i32) local.get $0 @@ -1379,12 +1379,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -1393,39 +1393,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i32.load8_s i32.store8 - local.get $5 + local.get $3 local.get $2 i32.load offset=4 i32.store offset=4 - local.get $5 + local.get $3 local.get $6 local.get $2 i32.load8_s @@ -1439,53 +1439,53 @@ i32.load i32.store offset=8 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 12 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -1500,7 +1500,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -2076,7 +2076,7 @@ local.get $0 i32.load offset=16 local.tee $7 - local.set $3 + local.set $4 i32.const 16 i32.const 4 call $~lib/rt/tlsf/__alloc @@ -2093,7 +2093,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $3 + local.get $4 i32.const 1073741808 i32.gt_u if @@ -2104,37 +2104,37 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 + local.tee $2 + local.get $4 call $~lib/memory/memory.fill - local.get $1 - local.set $2 - local.get $1 + local.get $2 + local.set $3 + local.get $2 local.get $0 i32.load local.tee $8 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $8 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $3 i32.store local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 - local.get $3 + local.get $4 i32.store offset=12 loop $for-loop|0 local.get $5 @@ -2146,21 +2146,21 @@ i32.const 12 i32.mul i32.add - local.tee $1 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 local.get $1 + local.get $2 i32.load8_s call $~lib/array/Array#__set - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 end local.get $5 i32.const 1 @@ -2170,7 +2170,7 @@ end end local.get $0 - local.get $4 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -2184,16 +2184,16 @@ i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.const 0 i32.store - local.get $3 + local.get $5 i32.const 0 i32.store offset=4 - local.get $3 + local.get $5 i32.const 0 i32.store offset=8 - local.get $3 + local.get $5 i32.const 0 i32.store offset=12 local.get $0 @@ -2213,36 +2213,36 @@ local.tee $4 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $1 + local.tee $2 local.get $4 call $~lib/memory/memory.fill - local.get $1 - local.set $2 - local.get $1 - local.get $3 + local.get $2 + local.set $1 + local.get $2 + local.get $5 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain - local.set $2 - local.get $5 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end - local.get $3 - local.get $2 - i32.store - local.get $3 + local.get $5 local.get $1 + i32.store + local.get $5 + local.get $2 i32.store offset=4 - local.get $3 + local.get $5 local.get $4 i32.store offset=8 - local.get $3 + local.get $5 local.get $0 i32.store offset=12 - local.get $3 + local.get $5 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2406,12 +2406,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -2420,39 +2420,39 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i32.load8_s i32.store8 - local.get $5 + local.get $3 local.get $2 i32.load8_s offset=1 i32.store8 offset=1 - local.get $5 + local.get $3 local.get $6 local.get $2 i32.load8_s @@ -2466,53 +2466,53 @@ i32.load i32.store offset=4 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 8 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 8 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -2527,7 +2527,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -2751,12 +2751,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -2765,39 +2765,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i32.load i32.store - local.get $5 + local.get $3 local.get $2 i32.load offset=4 i32.store offset=4 - local.get $5 + local.get $3 local.get $6 local.get $2 i32.load @@ -2811,53 +2811,53 @@ i32.load i32.store offset=8 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 12 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -2872,7 +2872,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -3611,12 +3611,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -3625,39 +3625,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i32.load8_u i32.store8 - local.get $5 + local.get $3 local.get $2 i32.load offset=4 i32.store offset=4 - local.get $5 + local.get $3 local.get $6 local.get $2 i32.load8_u @@ -3671,53 +3671,53 @@ i32.load i32.store offset=8 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 12 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -3732,7 +3732,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -3868,7 +3868,7 @@ local.get $0 i32.load offset=16 local.tee $7 - local.set $3 + local.set $4 i32.const 16 i32.const 9 call $~lib/rt/tlsf/__alloc @@ -3885,7 +3885,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $3 + local.get $4 i32.const 1073741808 i32.gt_u if @@ -3896,37 +3896,37 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 + local.tee $2 + local.get $4 call $~lib/memory/memory.fill - local.get $1 - local.set $2 - local.get $1 + local.get $2 + local.set $3 + local.get $2 local.get $0 i32.load local.tee $8 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $8 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $3 i32.store local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 - local.get $3 + local.get $4 i32.store offset=12 loop $for-loop|0 local.get $5 @@ -3938,21 +3938,21 @@ i32.const 12 i32.mul i32.add - local.tee $1 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 local.get $1 + local.get $2 i32.load8_u call $~lib/array/Array#__set - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 end local.get $5 i32.const 1 @@ -3962,7 +3962,7 @@ end end local.get $0 - local.get $4 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -3977,12 +3977,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -3991,39 +3991,39 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i32.load8_u i32.store8 - local.get $5 + local.get $3 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 - local.get $5 + local.get $3 local.get $6 local.get $2 i32.load8_u @@ -4037,53 +4037,53 @@ i32.load i32.store offset=4 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 8 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 8 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -4098,7 +4098,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -4881,12 +4881,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -4895,39 +4895,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i32.load16_s i32.store16 - local.get $5 + local.get $3 local.get $2 i32.load offset=4 i32.store offset=4 - local.get $5 + local.get $3 local.get $6 local.get $2 i32.load16_s @@ -4941,53 +4941,53 @@ i32.load i32.store offset=8 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 12 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -5002,7 +5002,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -5189,11 +5189,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 12 call $~lib/rt/tlsf/__alloc @@ -5210,7 +5210,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 536870904 i32.gt_u if @@ -5221,76 +5221,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 1 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 12 i32.mul i32.add - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i32.load16_s call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -5305,12 +5305,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -5319,39 +5319,39 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i32.load16_s i32.store16 - local.get $5 + local.get $3 local.get $2 i32.load16_s offset=2 i32.store16 offset=2 - local.get $5 + local.get $3 local.get $6 local.get $2 i32.load16_s @@ -5365,53 +5365,53 @@ i32.load i32.store offset=4 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 8 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 8 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -5426,7 +5426,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -5643,28 +5643,28 @@ i32.const 11 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $2 + local.tee $7 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store - local.get $2 + local.get $7 i32.const 3 i32.store offset=4 - local.get $2 + local.get $7 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 - local.get $2 + local.get $7 i32.const 4 i32.store offset=12 - local.get $2 + local.get $7 i32.const 0 i32.store offset=16 - local.get $2 + local.get $7 i32.const 0 i32.store offset=20 loop $for-loop|1 - local.get $3 + local.get $6 i32.const 16 i32.shl i32.const 16 @@ -5672,8 +5672,8 @@ i32.const 100 i32.lt_s if - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#has if i32.const 0 @@ -5683,9 +5683,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 - local.get $3 + local.get $7 + local.get $6 + local.get $6 i32.const 16 i32.shl i32.const 16 @@ -5694,8 +5694,8 @@ i32.add call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -5706,10 +5706,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#get - local.get $3 + local.get $6 i32.const 16 i32.shl i32.const 16 @@ -5725,14 +5725,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 1 i32.add - local.set $3 + local.set $6 br $for-loop|1 end end - local.get $2 + local.get $7 i32.load offset=20 i32.const 100 i32.ne @@ -5745,9 +5745,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $6 loop $for-loop|3 - local.get $3 + local.get $6 i32.const 16 i32.shl i32.const 16 @@ -5755,8 +5755,8 @@ i32.const 100 i32.lt_s if - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -5767,10 +5767,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#get - local.get $3 + local.get $6 i32.const 16 i32.shl i32.const 16 @@ -5786,9 +5786,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 - local.get $3 + local.get $7 + local.get $6 + local.get $6 i32.const 16 i32.shl i32.const 16 @@ -5797,8 +5797,8 @@ i32.add call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -5809,10 +5809,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#get - local.get $3 + local.get $6 i32.const 16 i32.shl i32.const 16 @@ -5828,14 +5828,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 1 i32.add - local.set $3 + local.set $6 br $for-loop|3 end end - local.get $2 + local.get $7 i32.load offset=20 i32.const 100 i32.ne @@ -5847,47 +5847,47 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $7 call $~lib/map/Map#keys - local.set $4 - local.get $2 + local.set $5 + local.get $7 call $~lib/map/Map#values - local.set $6 + local.set $3 i32.const 24 i32.const 13 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $6 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store - local.get $3 + local.get $6 i32.const 3 i32.store offset=4 - local.get $3 + local.get $6 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 - local.get $3 + local.get $6 i32.const 4 i32.store offset=12 - local.get $3 + local.get $6 i32.const 0 i32.store offset=16 - local.get $3 + local.get $6 i32.const 0 i32.store offset=20 call $~lib/map/Map#constructor - local.set $5 + local.set $4 loop $for-loop|4 - local.get $0 - local.get $4 + local.get $1 + local.get $5 i32.load offset=12 i32.lt_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.tee $0 + local.get $5 i32.load offset=12 i32.ge_u if @@ -5898,20 +5898,20 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.load offset=4 - local.get $1 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_s - local.set $0 - local.get $6 - local.get $1 - call $~lib/array/Array#__get - local.set $7 - local.get $2 + local.set $1 + local.get $3 local.get $0 + call $~lib/array/Array#__get + local.set $2 + local.get $7 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -5922,8 +5922,8 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $7 + local.get $2 i32.const 20 i32.sub call $~lib/map/Map#has @@ -5936,27 +5936,27 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $0 - local.get $0 + local.get $6 + local.get $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $5 - local.get $7 + local.get $4 + local.get $2 i32.const 20 i32.sub - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|4 end end - local.get $3 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -5968,7 +5968,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -5981,9 +5981,9 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|6 - local.get $0 + local.get $1 i32.const 16 i32.shl i32.const 16 @@ -5991,8 +5991,8 @@ i32.const 50 i32.lt_s if - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -6003,10 +6003,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#get - local.get $0 + local.get $1 i32.const 16 i32.shl i32.const 16 @@ -6022,11 +6022,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#delete - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has if i32.const 0 @@ -6036,14 +6036,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $7 i32.load offset=20 i32.const 50 i32.ne @@ -6056,9 +6056,9 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|8 - local.get $0 + local.get $1 i32.const 16 i32.shl i32.const 16 @@ -6066,8 +6066,8 @@ i32.const 50 i32.lt_s if - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has if i32.const 0 @@ -6077,9 +6077,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - local.get $0 + local.get $7 + local.get $1 + local.get $1 i32.const 16 i32.shl i32.const 16 @@ -6088,8 +6088,8 @@ i32.add call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -6100,11 +6100,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#delete - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has if i32.const 0 @@ -6114,14 +6114,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $7 i32.load offset=20 i32.const 50 i32.ne @@ -6133,9 +6133,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $7 call $~lib/map/Map#clear - local.get $2 + local.get $7 i32.load offset=20 if i32.const 0 @@ -6145,15 +6145,15 @@ call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release - local.get $2 + local.get $4 + call $~lib/rt/pure/__release + local.get $7 call $~lib/rt/pure/__release ) (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) @@ -6178,12 +6178,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -6192,39 +6192,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i32.load16_u i32.store16 - local.get $5 + local.get $3 local.get $2 i32.load offset=4 i32.store offset=4 - local.get $5 + local.get $3 local.get $6 local.get $2 i32.load16_u @@ -6238,53 +6238,53 @@ i32.load i32.store offset=8 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 12 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -6299,7 +6299,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -6432,11 +6432,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 15 call $~lib/rt/tlsf/__alloc @@ -6453,7 +6453,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 536870904 i32.gt_u if @@ -6464,76 +6464,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 1 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 12 i32.mul i32.add - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i32.load16_u call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -6548,12 +6548,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -6562,39 +6562,39 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i32.load16_u i32.store16 - local.get $5 + local.get $3 local.get $2 i32.load16_u offset=2 i32.store16 offset=2 - local.get $5 + local.get $3 local.get $6 local.get $2 i32.load16_u @@ -6608,53 +6608,53 @@ i32.load i32.store offset=4 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 8 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 8 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -6669,7 +6669,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -6882,35 +6882,35 @@ i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $2 + local.tee $7 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store - local.get $2 + local.get $7 i32.const 3 i32.store offset=4 - local.get $2 + local.get $7 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 - local.get $2 + local.get $7 i32.const 4 i32.store offset=12 - local.get $2 + local.get $7 i32.const 0 i32.store offset=16 - local.get $2 + local.get $7 i32.const 0 i32.store offset=20 loop $for-loop|1 - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 100 i32.lt_u if - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#has if i32.const 0 @@ -6920,17 +6920,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 - local.get $3 + local.get $7 + local.get $6 + local.get $6 i32.const 65535 i32.and i32.const 10 i32.add call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -6941,10 +6941,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#get - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 10 @@ -6958,14 +6958,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 1 i32.add - local.set $3 + local.set $6 br $for-loop|1 end end - local.get $2 + local.get $7 i32.load offset=20 i32.const 100 i32.ne @@ -6978,16 +6978,16 @@ unreachable end i32.const 0 - local.set $3 + local.set $6 loop $for-loop|3 - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 100 i32.lt_u if - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -6998,10 +6998,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#get - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 10 @@ -7015,17 +7015,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 - local.get $3 + local.get $7 + local.get $6 + local.get $6 i32.const 65535 i32.and i32.const 20 i32.add call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#has i32.eqz if @@ -7036,10 +7036,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $7 + local.get $6 call $~lib/map/Map#get - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 20 @@ -7053,14 +7053,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 1 i32.add - local.set $3 + local.set $6 br $for-loop|3 end end - local.get $2 + local.get $7 i32.load offset=20 i32.const 100 i32.ne @@ -7072,47 +7072,47 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $7 call $~lib/map/Map#keys - local.set $4 - local.get $2 + local.set $5 + local.get $7 call $~lib/map/Map#values - local.set $6 + local.set $3 i32.const 24 i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $6 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store - local.get $3 + local.get $6 i32.const 3 i32.store offset=4 - local.get $3 + local.get $6 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 - local.get $3 + local.get $6 i32.const 4 i32.store offset=12 - local.get $3 + local.get $6 i32.const 0 i32.store offset=16 - local.get $3 + local.get $6 i32.const 0 i32.store offset=20 call $~lib/map/Map#constructor - local.set $5 + local.set $4 loop $for-loop|4 - local.get $0 - local.get $4 + local.get $1 + local.get $5 i32.load offset=12 i32.lt_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.tee $0 + local.get $5 i32.load offset=12 i32.ge_u if @@ -7123,20 +7123,20 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.load offset=4 - local.get $1 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_u - local.set $0 - local.get $6 - local.get $1 - call $~lib/array/Array#__get - local.set $7 - local.get $2 + local.set $1 + local.get $3 local.get $0 + call $~lib/array/Array#__get + local.set $2 + local.get $7 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -7147,8 +7147,8 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $7 + local.get $2 i32.const 20 i32.sub call $~lib/map/Map#has @@ -7161,27 +7161,27 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $0 - local.get $0 + local.get $6 + local.get $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $5 - local.get $7 + local.get $4 + local.get $2 i32.const 20 i32.sub - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|4 end end - local.get $3 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -7193,7 +7193,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -7206,16 +7206,16 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|6 - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -7226,10 +7226,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#get - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 20 @@ -7243,11 +7243,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#delete - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has if i32.const 0 @@ -7257,14 +7257,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $7 i32.load offset=20 i32.const 50 i32.ne @@ -7277,16 +7277,16 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|8 - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has if i32.const 0 @@ -7296,17 +7296,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - local.get $0 + local.get $7 + local.get $1 + local.get $1 i32.const 65535 i32.and i32.const 10 i32.add call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -7317,11 +7317,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#delete - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map#has if i32.const 0 @@ -7331,14 +7331,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $7 i32.load offset=20 i32.const 50 i32.ne @@ -7350,9 +7350,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $7 call $~lib/map/Map#clear - local.get $2 + local.get $7 i32.load offset=20 if i32.const 0 @@ -7361,16 +7361,16 @@ i32.const 3 call $~lib/builtins/abort unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 + end + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release - local.get $2 + local.get $4 + call $~lib/rt/pure/__release + local.get $7 call $~lib/rt/pure/__release ) (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) @@ -7470,14 +7470,14 @@ (local $6 i32) (local $7 i32) call $~lib/map/Map#constructor - local.set $0 + local.set $1 loop $for-loop|0 - local.get $1 + local.get $2 i32.const 100 i32.lt_s if - local.get $0 local.get $1 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -7487,15 +7487,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 local.get $1 + local.get $2 + local.get $2 i32.const 10 i32.add call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $0 local.get $1 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -7506,10 +7506,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $2 call $~lib/map/Map#get - local.get $1 + local.get $2 i32.const 10 i32.add i32.ne @@ -7521,14 +7521,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end - local.get $0 + local.get $1 i32.load offset=20 i32.const 100 i32.ne @@ -7541,14 +7541,14 @@ unreachable end i32.const 0 - local.set $1 + local.set $2 loop $for-loop|1 - local.get $1 + local.get $2 i32.const 100 i32.lt_s if - local.get $0 local.get $1 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -7559,10 +7559,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $2 call $~lib/map/Map#get - local.get $1 + local.get $2 i32.const 10 i32.add i32.ne @@ -7574,15 +7574,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 local.get $1 + local.get $2 + local.get $2 i32.const 20 i32.add call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $0 local.get $1 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -7593,10 +7593,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $2 call $~lib/map/Map#get - local.get $1 + local.get $2 i32.const 20 i32.add i32.ne @@ -7608,14 +7608,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|1 end end - local.get $0 + local.get $1 i32.load offset=20 i32.const 100 i32.ne @@ -7627,14 +7627,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 local.set $5 - local.get $0 + local.get $1 i32.load offset=16 local.tee $6 call $~lib/array/Array#constructor - local.set $1 + local.set $2 loop $for-loop|01 local.get $4 local.get $6 @@ -7651,15 +7651,15 @@ i32.and i32.eqz if - local.get $1 - local.get $3 + local.get $2 + local.get $0 local.get $7 i32.load call $~lib/array/Array#__set - local.get $3 + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 end local.get $4 i32.const 1 @@ -7668,31 +7668,31 @@ br $for-loop|01 end end - local.get $1 - local.get $3 - call $~lib/array/Array#set:length + local.get $2 local.get $0 + call $~lib/array/Array#set:length + local.get $1 call $~lib/map/Map#values local.set $6 call $~lib/map/Map#constructor - local.set $3 + local.set $0 call $~lib/map/Map#constructor local.set $4 loop $for-loop|2 + local.get $3 local.get $2 - local.get $1 i32.load offset=12 i32.lt_s if - local.get $1 local.get $2 + local.get $3 call $~lib/array/Array#__get local.set $5 local.get $6 - local.get $2 + local.get $3 call $~lib/array/Array#__get local.set $7 - local.get $0 + local.get $1 local.get $5 call $~lib/map/Map#has i32.eqz @@ -7704,7 +7704,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $7 i32.const 20 i32.sub @@ -7718,7 +7718,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $5 local.get $5 call $~lib/map/Map#set @@ -7731,14 +7731,14 @@ local.get $5 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|2 end end - local.get $3 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -7763,14 +7763,14 @@ unreachable end i32.const 0 - local.set $2 + local.set $3 loop $for-loop|3 - local.get $2 + local.get $3 i32.const 50 i32.lt_s if - local.get $0 - local.get $2 + local.get $1 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -7781,10 +7781,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 + local.get $1 + local.get $3 call $~lib/map/Map#get - local.get $2 + local.get $3 i32.const 20 i32.add i32.ne @@ -7796,11 +7796,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 + local.get $1 + local.get $3 call $~lib/map/Map#delete - local.get $0 - local.get $2 + local.get $1 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -7810,14 +7810,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|3 end end - local.get $0 + local.get $1 i32.load offset=20 i32.const 50 i32.ne @@ -7830,14 +7830,14 @@ unreachable end i32.const 0 - local.set $2 + local.set $3 loop $for-loop|4 - local.get $2 + local.get $3 i32.const 50 i32.lt_s if - local.get $0 - local.get $2 + local.get $1 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -7847,15 +7847,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - local.get $2 + local.get $1 + local.get $3 + local.get $3 i32.const 10 i32.add call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $0 - local.get $2 + local.get $1 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -7866,11 +7866,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 + local.get $1 + local.get $3 call $~lib/map/Map#delete - local.get $0 - local.get $2 + local.get $1 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -7880,14 +7880,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|4 end end - local.get $0 + local.get $1 i32.load offset=20 i32.const 50 i32.ne @@ -7899,9 +7899,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/map/Map#clear - local.get $0 + local.get $1 i32.load offset=20 if i32.const 0 @@ -7911,15 +7911,15 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release ) (func $~lib/map/Map#keys (param $0 i32) (result i32) @@ -7934,11 +7934,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 18 call $~lib/rt/tlsf/__alloc @@ -7955,7 +7955,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 268435452 i32.gt_u if @@ -7966,76 +7966,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 2 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 12 i32.mul i32.add - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i32.load call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -8631,12 +8631,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -8645,39 +8645,39 @@ i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i64.load i64.store - local.get $5 + local.get $3 local.get $2 i32.load offset=8 i32.store offset=8 - local.get $5 + local.get $3 local.get $6 local.get $2 i64.load @@ -8691,53 +8691,53 @@ i32.load i32.store offset=12 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 16 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 16 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -8752,7 +8752,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result i32) @@ -8931,11 +8931,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 21 call $~lib/rt/tlsf/__alloc @@ -8952,7 +8952,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 134217726 i32.gt_u if @@ -8963,76 +8963,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 3 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 4 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i64.load call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -9120,12 +9120,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -9134,39 +9134,39 @@ i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 24 i32.mul i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=16 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 i64.load i64.store - local.get $5 + local.get $3 local.get $2 i64.load offset=8 i64.store offset=8 - local.get $5 + local.get $3 local.get $6 local.get $2 i64.load @@ -9180,53 +9180,53 @@ i32.load i32.store offset=16 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 24 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 24 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -9241,7 +9241,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result i32) @@ -9953,11 +9953,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 24 call $~lib/rt/tlsf/__alloc @@ -9974,7 +9974,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 134217726 i32.gt_u if @@ -9985,76 +9985,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 3 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 4 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i64.load call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -10593,12 +10593,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -10607,39 +10607,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 f32.load f32.store - local.get $5 + local.get $3 local.get $2 i32.load offset=4 i32.store offset=4 - local.get $5 + local.get $3 local.get $6 local.get $2 f32.load @@ -10654,53 +10654,53 @@ i32.load i32.store offset=8 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 12 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -10715,7 +10715,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) (result i32) @@ -10837,8 +10837,8 @@ (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 i32) + (local $3 i32) + (local $4 f32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -10847,11 +10847,11 @@ (local $10 i32) local.get $0 i32.load offset=8 - local.set $5 + local.set $6 local.get $0 i32.load offset=16 - local.tee $8 - local.set $7 + local.tee $9 + local.set $8 i32.const 16 i32.const 27 call $~lib/rt/tlsf/__alloc @@ -10868,7 +10868,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $8 + local.get $9 i32.const 268435452 i32.gt_u if @@ -10879,66 +10879,66 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $6 + local.tee $3 + local.get $7 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $4 + local.tee $5 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $4 + local.set $2 + local.get $5 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $7 i32.store offset=8 local.get $0 - local.get $7 + local.get $8 i32.store offset=12 loop $for-loop|0 + local.get $10 local.get $9 - local.get $8 i32.lt_s if - local.get $5 - local.get $9 + local.get $6 + local.get $10 i32.const 12 i32.mul i32.add - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $3 f32.load - local.set $3 - local.get $10 + local.set $4 + local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - local.get $10 + local.get $1 i32.const 0 i32.lt_s if @@ -10950,38 +10950,38 @@ unreachable end local.get $0 - local.get $10 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 call $~lib/array/ensureSize local.get $0 - local.get $2 + local.get $3 i32.store offset=12 end local.get $0 i32.load offset=4 - local.get $10 + local.get $1 i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 f32.store - local.get $10 + local.get $1 i32.const 1 i32.add - local.set $10 + local.set $1 end - local.get $9 + local.get $10 i32.const 1 i32.add - local.set $9 + local.set $10 br $for-loop|0 end end local.get $0 - local.get $10 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -10996,12 +10996,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -11010,39 +11010,39 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 f32.load f32.store - local.get $5 + local.get $3 local.get $2 f32.load offset=4 f32.store offset=4 - local.get $5 + local.get $3 local.get $6 local.get $2 f32.load @@ -11057,53 +11057,53 @@ i32.load i32.store offset=8 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 12 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -11118,7 +11118,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 f32) (result i32) @@ -11829,12 +11829,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -11843,39 +11843,39 @@ i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 f64.load f64.store - local.get $5 + local.get $3 local.get $2 i32.load offset=8 i32.store offset=8 - local.get $5 + local.get $3 local.get $6 local.get $2 f64.load @@ -11890,53 +11890,53 @@ i32.load i32.store offset=12 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 16 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 16 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -11951,7 +11951,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release ) (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (result i32) @@ -12073,8 +12073,8 @@ (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 i32) + (local $3 i32) + (local $4 f64) (local $5 i32) (local $6 i32) (local $7 i32) @@ -12083,11 +12083,11 @@ (local $10 i32) local.get $0 i32.load offset=8 - local.set $5 + local.set $6 local.get $0 i32.load offset=16 - local.tee $8 - local.set $7 + local.tee $9 + local.set $8 i32.const 16 i32.const 30 call $~lib/rt/tlsf/__alloc @@ -12104,7 +12104,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $8 + local.get $9 i32.const 134217726 i32.gt_u if @@ -12115,66 +12115,66 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 i32.shl - local.tee $6 + local.tee $7 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $6 + local.tee $3 + local.get $7 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $4 + local.tee $5 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $4 + local.set $2 + local.get $5 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $7 i32.store offset=8 local.get $0 - local.get $7 + local.get $8 i32.store offset=12 loop $for-loop|0 + local.get $10 local.get $9 - local.get $8 i32.lt_s if - local.get $5 - local.get $9 + local.get $6 + local.get $10 i32.const 4 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $3 f64.load - local.set $3 - local.get $10 + local.set $4 + local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - local.get $10 + local.get $1 i32.const 0 i32.lt_s if @@ -12186,38 +12186,38 @@ unreachable end local.get $0 - local.get $10 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 3 call $~lib/array/ensureSize local.get $0 - local.get $2 + local.get $3 i32.store offset=12 end local.get $0 i32.load offset=4 - local.get $10 + local.get $1 i32.const 3 i32.shl i32.add - local.get $3 + local.get $4 f64.store - local.get $10 + local.get $1 i32.const 1 i32.add - local.set $10 + local.set $1 end - local.get $9 + local.get $10 i32.const 1 i32.add - local.set $9 + local.set $10 br $for-loop|0 end end local.get $0 - local.get $10 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -12232,12 +12232,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $6 - local.get $4 + local.get $5 i32.const 3 i32.shl i32.const 3 @@ -12246,39 +12246,39 @@ i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 local.get $0 i32.load offset=16 i32.const 24 i32.mul i32.add local.set $8 - local.get $4 - local.set $5 + local.get $5 + local.set $3 loop $while-continue|0 - local.get $3 + local.get $4 local.get $8 i32.ne if - local.get $3 + local.get $4 local.tee $2 i32.load offset=16 i32.const 1 i32.and i32.eqz if - local.get $5 + local.get $3 local.get $2 f64.load f64.store - local.get $5 + local.get $3 local.get $2 f64.load offset=8 f64.store offset=8 - local.get $5 + local.get $3 local.get $6 local.get $2 f64.load @@ -12293,53 +12293,53 @@ i32.load i32.store offset=16 local.get $2 - local.get $5 + local.get $3 i32.store - local.get $5 + local.get $3 i32.const 24 i32.add - local.set $5 + local.set $3 end - local.get $3 + local.get $4 i32.const 24 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end local.get $6 - local.tee $3 + local.tee $4 local.get $0 local.tee $2 i32.load - local.tee $5 + local.tee $3 i32.ne if - local.get $3 + local.get $4 call $~lib/rt/pure/__retain - local.set $3 - local.get $5 + local.set $4 + local.get $3 call $~lib/rt/pure/__release end local.get $2 - local.get $3 + local.get $4 i32.store local.get $2 local.get $1 i32.store offset=4 local.get $2 local.set $1 - local.get $4 + local.get $5 local.tee $2 local.get $1 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $1 @@ -12354,7 +12354,7 @@ i32.store offset=16 local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $5 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 a576a4a5a6..e8b26cb48a 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -898,12 +898,14 @@ local.get $2 i32.const -1076707644 i32.le_u - if + if (result f64) i32.const 0 local.set $3 local.get $0 - local.set $1 + else + f64.const 0 end + local.set $1 else local.get $2 i32.const 2146435072 @@ -933,7 +935,7 @@ local.tee $3 i32.const 54 i32.lt_s - if + if (result f64) f64.const 1 local.get $5 f64.reinterpret_i64 @@ -952,8 +954,10 @@ select local.get $1 f64.div - local.set $6 + else + f64.const 0 end + local.set $6 local.get $5 i64.const 4294967295 i64.and @@ -1326,12 +1330,14 @@ local.get $2 i32.const -1097468391 i32.le_u - if + if (result f32) i32.const 0 local.set $3 local.get $0 - local.set $1 + else + f32.const 0 end + local.set $1 else local.get $2 i32.const 2139095040 @@ -1358,7 +1364,7 @@ local.tee $3 i32.const 25 i32.lt_s - if + if (result f32) f32.const 1 local.get $1 local.get $0 @@ -1375,8 +1381,10 @@ select local.get $1 f32.div - local.set $5 + else + f32.const 0 end + local.set $5 local.get $2 i32.const 8388607 i32.and @@ -1889,17 +1897,16 @@ local.tee $4 i64.const 1049 i64.ge_u - if + if (result f64) local.get $0 call $~lib/math/NativeMath.log f64.const 0.6931471805599453 f64.add - local.set $0 else local.get $4 i64.const 1024 i64.ge_u - if + if (result f64) f64.const 2 local.get $0 f64.mul @@ -1915,12 +1922,11 @@ f64.div f64.add call $~lib/math/NativeMath.log - local.set $0 else local.get $4 i64.const 997 i64.ge_u - if + if (result f64) local.get $0 local.get $0 local.get $0 @@ -1935,11 +1941,11 @@ f64.div f64.add call $~lib/math/NativeMath.log1p - local.set $0 + else + local.get $0 end end end - local.get $0 local.get $3 f64.copysign local.get $1 @@ -1969,17 +1975,16 @@ local.get $4 i32.const 1166016512 i32.ge_u - if + if (result f32) local.get $0 call $~lib/math/NativeMathf.log f32.const 0.6931471824645996 f32.add - local.set $0 else local.get $4 i32.const 1073741824 i32.ge_u - if + if (result f32) f32.const 2 local.get $0 f32.mul @@ -1995,12 +2000,11 @@ f32.div f32.add call $~lib/math/NativeMathf.log - local.set $0 else local.get $4 i32.const 964689920 i32.ge_u - if + if (result f32) local.get $0 local.get $0 local.get $0 @@ -2015,11 +2019,11 @@ f32.div f32.add call $~lib/math/NativeMathf.log1p - local.set $0 + else + local.get $0 end end end - local.get $0 local.get $3 f32.copysign local.get $1 @@ -2483,11 +2487,11 @@ local.tee $4 i64.const 1022 i64.lt_u - if + if (result f64) local.get $4 i64.const 991 i64.ge_u - if + if (result f64) f64.const 0.5 f64.const 2 local.get $0 @@ -2503,7 +2507,8 @@ f64.add call $~lib/math/NativeMath.log1p f64.mul - local.set $0 + else + local.get $0 end else f64.const 0.5 @@ -2516,9 +2521,7 @@ f64.mul call $~lib/math/NativeMath.log1p f64.mul - local.set $0 end - local.get $0 local.get $3 f64.copysign local.get $1 @@ -2546,11 +2549,11 @@ local.tee $4 i32.const 1056964608 i32.lt_u - if + if (result f32) local.get $4 i32.const 796917760 i32.ge_u - if + if (result f32) f32.const 0.5 f32.const 2 local.get $0 @@ -2565,7 +2568,8 @@ f32.mul call $~lib/math/NativeMathf.log1p f32.mul - local.set $0 + else + local.get $0 end else f32.const 0.5 @@ -2578,9 +2582,7 @@ f32.mul call $~lib/math/NativeMathf.log1p f32.mul - local.set $0 end - local.get $0 local.get $3 f32.copysign local.get $1 @@ -2591,10 +2593,9 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 f64) + (local $5 i32) + (local $6 i64) (local $7 i32) - (local $8 i32) i32.const 1 local.get $0 local.get $0 @@ -2611,24 +2612,24 @@ end local.get $0 i64.reinterpret_f64 - local.tee $5 + local.tee $6 i64.const 32 i64.shr_u i32.wrap_i64 - local.set $7 - local.get $5 + local.set $5 + local.get $6 i32.wrap_i64 local.get $1 i64.reinterpret_f64 - local.tee $5 + local.tee $6 i64.const 32 i64.shr_u i32.wrap_i64 - local.set $8 - local.get $5 + local.set $4 + local.get $6 i32.wrap_i64 - local.tee $4 - local.get $8 + local.tee $7 + local.get $4 i32.const 1072693248 i32.sub i32.or @@ -2638,24 +2639,24 @@ call $~lib/math/NativeMath.atan return end - local.get $8 + local.get $4 i32.const 30 i32.shr_u i32.const 2 i32.and - local.get $7 + local.get $5 i32.const 31 i32.shr_u i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $4 i32.const 2147483647 i32.and - local.set $8 - local.get $7 + local.set $4 + local.get $5 i32.const 2147483647 i32.and - local.tee $7 + local.tee $5 i32.or i32.eqz if @@ -2663,11 +2664,11 @@ block $case3|0 block $case2|0 block $case1|0 - local.get $3 + local.get $2 i32.eqz br_if $case1|0 block $tablify|0 - local.get $3 + local.get $2 i32.const 1 i32.sub br_table $case1|0 $case2|0 $case3|0 $tablify|0 @@ -2686,100 +2687,97 @@ end block $folding-inner0 local.get $4 - local.get $8 + local.get $7 i32.or i32.eqz br_if $folding-inner0 - local.get $8 + local.get $4 i32.const 2146435072 i32.eq if - local.get $7 + f64.const 2.356194490192345 + f64.const 0.7853981633974483 + local.get $2 + i32.const 2 + i32.and + select + f64.const 3.141592653589793 + f64.const 0 + local.get $2 + i32.const 2 + i32.and + select + local.get $5 i32.const 2146435072 i32.eq - if - f64.const 2.356194490192345 - f64.const 0.7853981633974483 - local.get $3 - i32.const 2 - i32.and - select - local.set $0 - else - f64.const 3.141592653589793 - f64.const 0 - local.get $3 - i32.const 2 - i32.and - select - local.set $0 - end - local.get $0 + select + local.tee $0 f64.neg local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.and select return end i32.const 1 - local.get $7 + local.get $5 i32.const 2146435072 i32.eq - local.get $8 + local.get $4 i32.const 67108864 i32.add - local.get $7 + local.get $5 i32.lt_u select br_if $folding-inner0 - local.get $7 + local.get $5 i32.const 67108864 i32.add - local.get $8 + local.get $4 i32.lt_u i32.const 0 - local.get $3 + local.get $2 i32.const 2 i32.and select - i32.eqz - if + if (result f64) + f64.const 0 + else local.get $0 local.get $1 f64.div f64.abs call $~lib/math/NativeMath.atan - local.set $6 end + local.set $0 block $break|1 block $case3|1 block $case2|1 block $case1|1 - local.get $3 - local.tee $2 + local.get $2 + local.tee $3 if - local.get $2 + local.get $3 i32.const 1 i32.sub br_table $case1|1 $case2|1 $case3|1 $break|1 end - local.get $6 + local.get $0 return end - local.get $6 + local.get $0 f64.neg return end f64.const 3.141592653589793 - local.get $6 + local.get $0 f64.const 1.2246467991473532e-16 f64.sub f64.sub return end - local.get $6 + local.get $0 f64.const 1.2246467991473532e-16 f64.sub f64.const 3.141592653589793 @@ -2790,7 +2788,7 @@ end f64.const -1.5707963267948966 f64.const 1.5707963267948966 - local.get $3 + local.get $2 i32.const 1 i32.and select @@ -2816,8 +2814,7 @@ (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) - (local $4 f32) - (local $5 i32) + (local $4 i32) i32.const 1 local.get $0 local.get $0 @@ -2834,10 +2831,10 @@ end local.get $0 i32.reinterpret_f32 - local.set $2 + local.set $3 local.get $1 i32.reinterpret_f32 - local.tee $5 + local.tee $4 i32.const 1065353216 i32.eq if @@ -2845,42 +2842,42 @@ call $~lib/math/NativeMathf.atan return end - local.get $5 + local.get $4 i32.const 30 i32.shr_u i32.const 2 i32.and - local.get $2 + local.get $3 i32.const 31 i32.shr_u i32.or - local.set $3 - local.get $5 + local.set $2 + local.get $4 i32.const 2147483647 i32.and - local.set $5 - local.get $2 + local.set $4 + local.get $3 i32.const 2147483647 i32.and - local.tee $2 + local.tee $3 i32.eqz if block $break|0 block $case3|0 block $case2|0 - local.get $3 + local.get $2 i32.eqz - local.get $3 + local.get $2 i32.const 1 i32.eq i32.or i32.eqz if - local.get $3 + local.get $2 i32.const 2 i32.eq br_if $case2|0 - local.get $3 + local.get $2 i32.const 3 i32.eq br_if $case3|0 @@ -2897,101 +2894,97 @@ end end block $folding-inner0 - local.get $5 + local.get $4 i32.eqz br_if $folding-inner0 - local.get $5 + local.get $4 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 - if - f32.const 2.356194496154785 - f32.const 0.7853981852531433 - local.get $3 - i32.const 2 - i32.and - select - local.set $0 - else - f32.const 3.1415927410125732 - f32.const 0 - local.get $3 - i32.const 2 - i32.and - select - local.set $0 - end - local.get $3 + select + local.set $0 + local.get $0 + f32.neg + local.get $0 + local.get $2 i32.const 1 i32.and - if - local.get $0 - f32.neg - local.set $0 - end - local.get $0 + select return end i32.const 1 - local.get $2 + local.get $3 i32.const 2139095040 i32.eq - local.get $5 + local.get $4 i32.const 218103808 i32.add - local.get $2 + local.get $3 i32.lt_u select br_if $folding-inner0 - local.get $2 + local.get $3 i32.const 218103808 i32.add - local.get $5 + local.get $4 i32.lt_u i32.const 0 - local.get $3 + local.get $2 i32.const 2 i32.and select - i32.eqz - if + if (result f32) + f32.const 0 + else local.get $0 local.get $1 f32.div f32.abs call $~lib/math/NativeMathf.atan - local.set $4 end + local.set $0 block $break|1 block $case3|1 block $case2|1 block $case1|1 - local.get $3 - local.tee $2 + local.get $2 + local.tee $3 if - local.get $2 + local.get $3 i32.const 1 i32.sub br_table $case1|1 $case2|1 $case3|1 $break|1 end - local.get $4 + local.get $0 return end - local.get $4 + local.get $0 f32.neg return end f32.const 3.1415927410125732 - local.get $4 + local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.sub return end - local.get $4 + local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.const 3.1415927410125732 @@ -3002,7 +2995,7 @@ end f32.const -1.5707963705062866 f32.const 1.5707963705062866 - local.get $3 + local.get $2 i32.const 1 i32.and select @@ -3301,7 +3294,7 @@ i64.shr_s i64.const 1045 i64.sub - local.tee $1 + local.tee $2 i64.const 6 i64.shr_s i32.wrap_i64 @@ -3314,166 +3307,166 @@ local.set $6 local.get $7 i64.load offset=8 - local.set $3 + local.set $4 local.get $7 i64.load offset=16 - local.set $4 - local.get $1 + local.set $1 + local.get $2 i64.const 63 i64.and - local.tee $1 + local.tee $2 i64.const 0 i64.ne if local.get $6 - local.get $1 + local.get $2 i64.shl - local.get $3 + local.get $4 i64.const 64 - local.get $1 + local.get $2 i64.sub - local.tee $2 + local.tee $3 i64.shr_u i64.or local.set $6 - local.get $3 - local.get $1 - i64.shl local.get $4 local.get $2 + i64.shl + local.get $1 + local.get $3 i64.shr_u i64.or - local.set $3 - local.get $4 + local.set $4 local.get $1 + local.get $2 i64.shl local.get $7 i64.load offset=24 - local.get $2 + local.get $3 i64.shr_u i64.or - local.set $4 + local.set $1 end local.get $0 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or - local.tee $1 + local.tee $2 i64.const 4294967295 i64.and - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i64.const 32 i64.shr_u local.tee $8 i64.mul - local.get $3 + local.get $4 i64.const 4294967295 i64.and local.tee $5 - local.get $2 + local.get $3 i64.mul local.tee $9 i64.const 32 i64.shr_u i64.add - local.set $3 + local.set $4 local.get $5 - local.get $1 + local.get $2 i64.const 32 i64.shr_u local.tee $5 i64.mul - local.get $3 + local.get $4 i64.const 4294967295 i64.and i64.add - local.set $2 + local.set $3 local.get $5 local.get $8 i64.mul - local.get $3 + local.get $4 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $3 i64.const 32 i64.shr_u i64.add global.set $~lib/math/res128_hi global.get $~lib/math/res128_hi - local.get $1 + local.get $2 local.get $6 i64.mul i64.add - local.get $4 + local.get $1 i64.const 32 i64.shr_u - local.get $1 + local.get $2 i64.const 32 i64.shr_s i64.mul - local.tee $3 + local.tee $4 local.get $9 i64.const 4294967295 i64.and - local.get $2 + local.get $3 i64.const 32 i64.shl i64.add i64.add - local.tee $1 - local.get $3 + local.tee $2 + local.get $4 i64.lt_u i64.extend_i32_u i64.add local.tee $8 i64.const 2 i64.shl - local.get $1 + local.get $2 i64.const 62 i64.shr_u i64.or local.tee $6 i64.const 63 i64.shr_s - local.tee $4 + local.tee $1 i64.const 1 i64.shr_s local.get $6 i64.xor - local.tee $2 + local.tee $3 i64.clz - local.set $3 - local.get $2 + local.set $4 local.get $3 - i64.shl local.get $4 + i64.shl local.get $1 + local.get $2 i64.const 2 i64.shl i64.xor local.tee $5 i64.const 64 - local.get $3 + local.get $4 i64.sub i64.shr_u i64.or - local.tee $1 + local.tee $2 i64.const 4294967295 i64.and - local.set $2 - local.get $1 + local.set $3 + local.get $2 i64.const 32 i64.shr_u local.tee $9 i64.const 560513588 i64.mul - local.get $2 + local.get $3 i64.const 3373259426 i64.mul - local.get $2 + local.get $3 i64.const 560513588 i64.mul local.tee $10 @@ -3484,7 +3477,7 @@ i64.const 4294967295 i64.and i64.add - local.set $2 + local.set $3 local.get $9 i64.const 3373259426 i64.mul @@ -3492,7 +3485,7 @@ i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $3 i64.const 32 i64.shr_u i64.add @@ -3500,24 +3493,24 @@ local.get $10 i64.const 4294967295 i64.and - local.get $2 + local.get $3 i64.const 32 i64.shl i64.add - local.tee $2 + local.tee $3 f64.const 3.753184150245214e-04 - local.get $1 + local.get $2 f64.convert_i64_u f64.mul f64.const 3.834951969714103e-04 local.get $5 - local.get $3 + local.get $4 i64.shl f64.convert_i64_u f64.mul f64.add i64.trunc_f64_u - local.tee $1 + local.tee $2 i64.lt_u i64.extend_i32_u global.get $~lib/math/res128_hi @@ -3528,11 +3521,11 @@ f64.convert_i64_u global.set $~lib/math/rempio2_y0 f64.const 5.421010862427522e-20 - local.get $1 + local.get $2 local.get $5 i64.const 53 i64.shl - local.get $2 + local.get $3 i64.const 11 i64.shr_u i64.or @@ -3542,7 +3535,7 @@ global.set $~lib/math/rempio2_y1 global.get $~lib/math/rempio2_y0 i64.const 4372995238176751616 - local.get $3 + local.get $4 i64.const 52 i64.shl i64.sub @@ -3563,7 +3556,7 @@ local.get $8 i64.const 62 i64.shr_s - local.get $4 + local.get $1 i64.sub i32.wrap_i64 ) @@ -3736,7 +3729,7 @@ i32.sub i32.const 49 i32.gt_u - if + if (result f64) local.get $3 f64.const 8.4784276603689e-32 f64.mul @@ -3756,8 +3749,10 @@ local.get $0 local.get $4 f64.sub - local.set $1 + else + local.get $1 end + local.set $1 end local.get $1 global.set $~lib/math/rempio2_y0 @@ -3887,17 +3882,15 @@ f64.add end local.set $0 + local.get $0 + f64.neg + local.get $0 local.get $6 i32.const 1 i32.add i32.const 2 i32.and - if - local.get $0 - f64.neg - local.set $0 - end - local.get $0 + select ) (func $std/math/test_cos (param $0 f64) (param $1 f64) (param $2 f64) (result i32) local.get $0 @@ -4172,17 +4165,15 @@ f32.demote_f64 end local.set $0 + local.get $0 + f32.neg + local.get $0 local.get $1 i32.const 1 i32.add i32.const 2 i32.and - if - local.get $0 - f32.neg - local.set $0 - end - local.get $0 + select ) (func $std/math/test_cosf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) local.get $0 @@ -4604,13 +4595,13 @@ f64.add local.set $0 local.get $4 - if + if (result f64) local.get $0 local.get $4 call $~lib/math/NativeMath.scalbn - local.set $0 + else + local.get $0 end - local.get $0 ) (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) @@ -5063,13 +5054,13 @@ f32.add local.set $0 local.get $3 - if + if (result f32) local.get $0 local.get $3 call $~lib/math/NativeMathf.scalbn - local.set $0 + else + local.get $0 end - local.get $0 ) (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) @@ -5181,9 +5172,9 @@ call $std/math/check ) (func $~lib/math/NativeMath.exp2 (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 i32) + (local $1 i32) + (local $2 f64) + (local $3 i64) (local $4 f64) (local $5 i64) (local $6 i32) @@ -5191,75 +5182,75 @@ block $~lib/util/math/exp2_lut|inlined.0 local.get $0 i64.reinterpret_f64 - local.tee $2 + local.tee $3 i64.const 52 i64.shr_u i64.const 2047 i64.and i32.wrap_i64 - local.tee $3 + local.tee $1 i32.const 969 i32.sub i32.const 63 i32.ge_u if - local.get $3 + local.get $1 i32.const 969 i32.sub i32.const -2147483648 i32.ge_u if f64.const 1 - local.set $1 + local.set $2 br $~lib/util/math/exp2_lut|inlined.0 end - local.get $3 + local.get $1 i32.const 1033 i32.ge_u if - local.get $2 + local.get $3 i64.const -4503599627370496 i64.eq br_if $~lib/util/math/exp2_lut|inlined.0 - local.get $3 + local.get $1 i32.const 2047 i32.ge_u if f64.const 1 local.get $0 f64.add - local.set $1 + local.set $2 br $~lib/util/math/exp2_lut|inlined.0 end - local.get $2 + local.get $3 i64.const 63 i64.shr_u i64.eqz if f64.const inf - local.set $1 + local.set $2 br $~lib/util/math/exp2_lut|inlined.0 else - local.get $2 + local.get $3 i64.const -4570929321408987136 i64.ge_u br_if $~lib/util/math/exp2_lut|inlined.0 end end i32.const 0 + local.get $1 local.get $3 - local.get $2 i64.const 1 i64.shl i64.const -9143996093422370816 i64.gt_u select - local.set $3 + local.set $1 end local.get $0 f64.const 52776558133248 f64.add - local.tee $1 + local.tee $2 i64.reinterpret_f64 local.tee $5 i64.const 127 @@ -5277,16 +5268,16 @@ i64.const 45 i64.shl i64.add - local.set $2 + local.set $3 local.get $0 - local.get $1 + local.get $2 f64.const 52776558133248 f64.sub f64.sub local.tee $0 local.get $0 f64.mul - local.set $1 + local.set $2 local.get $6 i64.load f64.reinterpret_i64 @@ -5294,7 +5285,7 @@ f64.const 0.6931471805599453 f64.mul f64.add - local.get $1 + local.get $2 f64.const 0.24022650695909065 local.get $0 f64.const 0.0555041086686087 @@ -5302,8 +5293,8 @@ f64.add f64.mul f64.add - local.get $1 - local.get $1 + local.get $2 + local.get $2 f64.mul f64.const 0.009618131975721055 local.get $0 @@ -5313,7 +5304,7 @@ f64.mul f64.add local.set $0 - local.get $3 + local.get $1 i32.eqz if block $~lib/util/math/specialcase2|inlined.0 (result f64) @@ -5323,19 +5314,19 @@ i64.eqz if f64.const 2 - local.get $2 + local.get $3 i64.const 4503599627370496 i64.sub f64.reinterpret_i64 - local.tee $1 + local.tee $2 local.get $0 f64.mul - local.get $1 + local.get $2 f64.add f64.mul br $~lib/util/math/specialcase2|inlined.0 end - local.get $2 + local.get $3 i64.const 4602678819172646912 i64.add f64.reinterpret_i64 @@ -5344,21 +5335,21 @@ f64.mul local.get $4 f64.add - local.tee $1 + local.tee $2 f64.const 1 f64.lt if (result f64) f64.const 1 - local.get $1 + local.get $2 f64.add local.tee $7 f64.const 1 local.get $7 f64.sub - local.get $1 + local.get $2 f64.add local.get $4 - local.get $1 + local.get $2 f64.sub local.get $4 local.get $0 @@ -5369,24 +5360,24 @@ f64.const 1 f64.sub else - local.get $1 + local.get $2 end f64.const 2.2250738585072014e-308 f64.mul end - local.set $1 + local.set $2 br $~lib/util/math/exp2_lut|inlined.0 end - local.get $2 + local.get $3 f64.reinterpret_i64 - local.tee $1 + local.tee $2 local.get $0 f64.mul - local.get $1 + local.get $2 f64.add - local.set $1 + local.set $2 end - local.get $1 + local.get $2 ) (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) local.get $0 @@ -5551,18 +5542,18 @@ i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $4 + local.tee $2 i64.lt_u if local.get $3 - local.get $4 + local.get $2 local.set $3 - local.set $4 + local.set $2 end - local.get $4 + local.get $2 f64.reinterpret_i64 local.set $1 - local.get $4 + local.get $2 i64.const 52 i64.shr_u i32.wrap_i64 @@ -5577,7 +5568,7 @@ f64.reinterpret_i64 local.set $0 i32.const 1 - local.get $4 + local.get $2 i64.eqz local.get $3 i64.const 52 @@ -5723,21 +5714,21 @@ i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $4 + local.tee $2 i32.lt_u if local.get $3 - local.get $4 + local.get $2 local.set $3 - local.set $4 + local.set $2 end local.get $3 f32.reinterpret_i32 local.set $0 - local.get $4 + local.get $2 f32.reinterpret_i32 local.set $1 - local.get $4 + local.get $2 i32.const 2139095040 i32.eq if @@ -5746,12 +5737,12 @@ end i32.const 1 local.get $3 - local.get $4 + local.get $2 i32.sub i32.const 209715200 i32.ge_u i32.const 1 - local.get $4 + local.get $2 i32.eqz local.get $3 i32.const 2139095040 @@ -5780,7 +5771,7 @@ f32.const 8.077935669463161e-28 f32.mul else - local.get $4 + local.get $2 i32.const 562036736 i32.lt_u if (result f32) @@ -7232,7 +7223,7 @@ local.get $15 i32.const 0 i32.lt_s - if + if (result i32) local.get $8 i32.const 1128267776 i32.ge_s @@ -7281,8 +7272,10 @@ i32.const 0 end end - local.set $5 + else + i32.const 0 end + local.set $5 local.get $19 i32.eqz if @@ -7365,7 +7358,7 @@ end local.get $0 f64.abs - local.set $2 + local.set $3 local.get $18 i32.eqz if @@ -7382,14 +7375,14 @@ select if f64.const 1 - local.get $2 + local.get $3 f64.div - local.get $2 + local.get $3 local.get $7 i32.const 0 i32.lt_s select - local.set $2 + local.set $3 local.get $15 i32.const 0 i32.lt_s @@ -7400,33 +7393,31 @@ i32.sub i32.or if (result f64) - local.get $2 + local.get $3 f64.neg - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.eq select else - local.get $2 - local.get $2 + local.get $3 + local.get $3 f64.sub local.tee $0 local.get $0 f64.div end else - local.get $2 + local.get $3 end return end end - f64.const 1 - local.set $10 local.get $15 i32.const 0 i32.lt_s - if + if (result f64) local.get $5 i32.eqz if @@ -7444,8 +7435,10 @@ i32.const 1 i32.eq select - local.set $10 + else + f64.const 1 end + local.set $10 local.get $8 i32.const 1105199104 i32.gt_s @@ -7520,12 +7513,12 @@ return end f64.const 1.4426950216293335 - local.get $2 + local.get $3 f64.const 1 f64.sub local.tee $0 f64.mul - local.tee $2 + local.tee $3 local.get $0 f64.const 1.9259629911266175e-08 f64.mul @@ -7554,7 +7547,7 @@ local.set $6 local.get $0 local.get $6 - local.get $2 + local.get $3 f64.sub f64.sub else @@ -7562,10 +7555,10 @@ i32.const 1048576 i32.lt_s if (result i32) - local.get $2 + local.get $3 f64.const 9007199254740992 f64.mul - local.tee $2 + local.tee $3 i64.reinterpret_f64 i64.const 32 i64.shr_u @@ -7611,7 +7604,7 @@ end end f64.const 0.9617967009544373 - local.get $2 + local.get $3 i64.reinterpret_f64 i64.const 4294967295 i64.and @@ -7626,12 +7619,12 @@ f64.const 1 local.get $16 select - local.tee $3 - f64.sub local.tee $2 + f64.sub + local.tee $3 f64.const 1 local.get $6 - local.get $3 + local.get $2 f64.add f64.div local.tee $0 @@ -7677,7 +7670,7 @@ f64.add f64.mul local.get $0 - local.get $2 + local.get $3 local.get $14 local.get $4 i32.const 1 @@ -7700,13 +7693,13 @@ local.get $14 local.get $6 local.get $0 - local.get $3 + local.get $2 f64.sub f64.sub f64.mul f64.sub f64.mul - local.tee $3 + local.tee $2 local.get $14 local.get $17 f64.add @@ -7720,8 +7713,8 @@ f64.reinterpret_i64 local.tee $6 f64.mul - local.tee $2 - local.get $3 + local.tee $3 + local.get $2 local.get $6 f64.mul local.get $0 @@ -7740,15 +7733,15 @@ i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $3 + local.tee $2 f64.mul local.tee $20 f64.const -7.028461650952758e-09 - local.get $3 + local.get $2 f64.mul local.get $0 - local.get $3 local.get $2 + local.get $3 f64.sub f64.sub f64.const 0.9617966939259756 @@ -7759,13 +7752,13 @@ local.get $16 select f64.add - local.tee $3 + local.tee $2 f64.add f64.const 0.5849624872207642 f64.const 0 local.get $16 select - local.tee $2 + local.tee $3 f64.add local.get $7 f64.convert_i32_s @@ -7776,17 +7769,17 @@ i64.and f64.reinterpret_i64 local.set $6 - local.get $3 + local.get $2 local.get $6 local.get $0 f64.sub - local.get $2 + local.get $3 f64.sub local.get $20 f64.sub f64.sub end - local.set $2 + local.set $3 local.get $1 local.get $1 i64.reinterpret_f64 @@ -7798,14 +7791,14 @@ local.get $6 f64.mul local.get $1 - local.get $2 + local.get $3 f64.mul f64.add local.tee $1 local.get $0 local.get $6 f64.mul - local.tee $3 + local.tee $2 f64.add local.tee $0 i64.reinterpret_f64 @@ -7831,7 +7824,7 @@ f64.const 8.008566259537294e-17 f64.add local.get $0 - local.get $3 + local.get $2 f64.sub f64.gt i32.or @@ -7850,7 +7843,7 @@ i32.or local.get $1 local.get $0 - local.get $3 + local.get $2 f64.sub f64.le i32.or @@ -7868,6 +7861,7 @@ local.set $5 i32.const 0 local.set $7 + local.get $1 local.get $9 i32.const 1071644672 i32.gt_s @@ -7916,13 +7910,12 @@ i32.lt_s select local.set $7 - local.get $3 + local.get $2 local.get $0 f64.sub - local.set $3 + local.set $2 end - local.get $1 - local.get $3 + local.get $2 f64.add i64.reinterpret_f64 i64.const -4294967296 @@ -7931,10 +7924,10 @@ local.tee $0 f64.const 0.6931471824645996 f64.mul - local.tee $2 + local.tee $3 local.get $1 local.get $0 - local.get $3 + local.get $2 f64.sub f64.sub f64.const 0.6931471805599453 @@ -7945,14 +7938,14 @@ f64.add local.tee $1 f64.add - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.mul local.set $0 local.get $10 f64.const 1 - local.get $3 - local.get $3 + local.get $2 + local.get $2 local.get $0 f64.const 0.16666666666666602 local.get $0 @@ -7980,17 +7973,17 @@ f64.sub f64.div local.get $1 - local.get $3 local.get $2 + local.get $3 f64.sub f64.sub local.tee $0 - local.get $3 + local.get $2 local.get $0 f64.mul f64.add f64.sub - local.get $3 + local.get $2 f64.sub f64.sub local.tee $0 @@ -8562,6 +8555,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 + local.set $8 local.get $3 i64.eqz if (result i64) @@ -8746,12 +8740,11 @@ select select local.set $0 - if - local.get $0 - f64.neg - local.set $0 - end local.get $0 + f64.neg + local.get $0 + local.get $8 + select ) (func $std/math/test_rem (param $0 f64) (param $1 f64) (param $2 f64) (result i32) local.get $0 @@ -8772,7 +8765,7 @@ (local $9 i32) local.get $0 i32.reinterpret_f32 - local.tee $3 + local.tee $2 i32.const 23 i32.shr_u i32.const 255 @@ -8786,8 +8779,8 @@ i32.const 255 i32.and local.set $8 - local.get $3 - local.set $2 + local.get $2 + local.set $3 i32.const 1 local.get $1 local.get $1 @@ -8810,7 +8803,7 @@ f32.div return end - local.get $2 + local.get $3 i32.const 1 i32.shl i32.eqz @@ -8818,21 +8811,22 @@ local.get $0 return end - local.get $2 + local.get $3 i32.const 31 i32.shr_u + local.set $4 local.get $9 if (result i32) - local.get $2 + local.get $3 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $2 + local.get $3 i32.const 1 local.get $9 - local.get $2 + local.get $3 i32.const 9 i32.shl i32.clz @@ -8841,7 +8835,7 @@ i32.sub i32.shl end - local.set $3 + local.set $2 local.get $8 if (result i32) local.get $6 @@ -8862,7 +8856,7 @@ i32.sub i32.shl end - local.set $2 + local.set $3 block $do-break|0 local.get $9 local.get $8 @@ -8882,23 +8876,23 @@ local.get $8 i32.gt_s if - local.get $3 local.get $2 + local.get $3 i32.ge_u if (result i32) local.get $7 i32.const 1 i32.add local.set $7 - local.get $3 local.get $2 + local.get $3 i32.sub else - local.get $3 + local.get $2 end i32.const 1 i32.shl - local.set $3 + local.set $2 local.get $7 i32.const 1 i32.shl @@ -8910,47 +8904,46 @@ br $while-continue|1 end end - local.get $3 local.get $2 + local.get $3 i32.ge_u if local.get $7 i32.const 1 i32.add local.set $7 - local.get $3 local.get $2 + local.get $3 i32.sub - local.set $3 + local.set $2 end - local.get $3 - i32.eqz + local.get $2 if - i32.const -30 - local.set $9 - else local.get $9 - local.get $3 + local.get $2 i32.const 8 i32.shl i32.clz - local.tee $2 + local.tee $3 i32.sub local.set $9 - local.get $3 local.get $2 + local.get $3 i32.shl - local.set $3 + local.set $2 + else + i32.const -30 + local.set $9 end end - local.get $3 + local.get $2 i32.const 8388608 i32.sub local.get $9 i32.const 23 i32.shl i32.or - local.get $3 + local.get $2 i32.const 1 local.get $9 i32.sub @@ -8997,12 +8990,11 @@ select select local.set $0 - if - local.get $0 - f32.neg - local.set $0 - end local.get $0 + f32.neg + local.get $0 + local.get $4 + select ) (func $std/math/test_remf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) local.get $0 @@ -9164,7 +9156,7 @@ i32.sub i32.const 49 i32.gt_u - if + if (result f64) local.get $3 f64.const 8.4784276603689e-32 f64.mul @@ -9184,8 +9176,10 @@ local.get $0 local.get $4 f64.sub - local.set $1 + else + local.get $1 end + local.set $1 end local.get $1 global.set $~lib/math/rempio2_y0 @@ -9315,15 +9309,13 @@ f64.sub end local.set $0 + local.get $0 + f64.neg + local.get $0 local.get $6 i32.const 2 i32.and - if - local.get $0 - f64.neg - local.set $0 - end - local.get $0 + select ) (func $std/math/test_sin (param $0 f64) (param $1 f64) (param $2 f64) (result i32) local.get $0 @@ -9601,15 +9593,13 @@ f32.demote_f64 end local.set $0 + local.get $0 + f32.neg + local.get $0 local.get $1 i32.const 2 i32.and - if - local.get $0 - f32.neg - local.set $0 - end - local.get $0 + select ) (func $std/math/test_sinf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) local.get $0 @@ -10113,7 +10103,7 @@ i32.sub i32.const 49 i32.gt_u - if + if (result f64) local.get $5 f64.const 8.4784276603689e-32 f64.mul @@ -10133,8 +10123,10 @@ local.get $0 local.get $3 f64.sub - local.set $1 + else + local.get $1 end + local.set $1 end local.get $1 global.set $~lib/math/rempio2_y0 @@ -10186,9 +10178,9 @@ end ) (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) - (local $1 i32) + (local $1 f64) (local $2 i32) - (local $3 f64) + (local $3 i32) (local $4 f64) (local $5 f64) (local $6 i64) @@ -10200,18 +10192,18 @@ (local $12 i64) local.get $0 i32.reinterpret_f32 - local.tee $1 + local.tee $2 i32.const 31 i32.shr_u local.set $11 - local.get $1 + local.get $2 i32.const 2147483647 i32.and - local.tee $2 + local.tee $3 i32.const 1061752794 i32.le_u if - local.get $2 + local.get $3 i32.const 964689920 i32.lt_u if @@ -10226,9 +10218,9 @@ local.tee $4 local.get $5 f64.mul - local.set $3 + local.set $1 local.get $5 - local.get $3 + local.get $1 f64.const 0.3333313950307914 local.get $4 f64.const 0.13339200271297674 @@ -10236,18 +10228,18 @@ f64.add f64.mul f64.add - local.get $3 + local.get $1 local.get $4 local.get $4 f64.mul - local.tee $3 + local.tee $1 f64.mul f64.const 0.05338123784456704 local.get $4 f64.const 0.024528318116654728 f64.mul f64.add - local.get $3 + local.get $1 f64.const 0.002974357433599673 local.get $4 f64.const 0.009465647849436732 @@ -10260,7 +10252,7 @@ f32.demote_f64 return end - local.get $2 + local.get $3 i32.const 2139095040 i32.ge_u if @@ -10270,7 +10262,7 @@ return end block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $2 + local.get $3 i32.const 1305022427 i32.lt_u if @@ -10281,25 +10273,25 @@ f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $3 + local.tee $1 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $3 + local.get $1 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $3 + local.get $1 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.2 end - local.get $2 + local.get $3 i32.const 23 i32.shr_s i32.const 152 i32.sub - local.tee $1 + local.tee $2 i32.const 6 i32.shr_s i32.const 3 @@ -10312,7 +10304,7 @@ local.get $10 i64.load offset=8 local.set $8 - local.get $1 + local.get $2 i32.const 63 i32.and i64.extend_i32_s @@ -10344,7 +10336,7 @@ local.get $0 f64.promote_f32 f64.copysign - local.get $2 + local.get $3 i32.const 8388607 i32.and i32.const 8388608 @@ -10383,12 +10375,13 @@ i64.shr_u i64.add i32.wrap_i64 - local.tee $1 + local.tee $2 i32.sub - local.get $1 + local.get $2 local.get $11 select end + local.set $2 global.get $~lib/math/rempio2f_y local.tee $5 local.get $5 @@ -10396,9 +10389,9 @@ local.tee $4 local.get $5 f64.mul - local.set $3 + local.set $1 local.get $5 - local.get $3 + local.get $1 f64.const 0.3333313950307914 local.get $4 f64.const 0.13339200271297674 @@ -10406,18 +10399,18 @@ f64.add f64.mul f64.add - local.get $3 + local.get $1 local.get $4 local.get $4 f64.mul - local.tee $3 + local.tee $1 f64.mul f64.const 0.05338123784456704 local.get $4 f64.const 0.024528318116654728 f64.mul f64.add - local.get $3 + local.get $1 f64.const 0.002974357433599673 local.get $4 f64.const 0.009465647849436732 @@ -10427,16 +10420,15 @@ f64.add f64.mul f64.add - local.set $3 + local.set $1 + f64.const -1 + local.get $1 + f64.div + local.get $1 + local.get $2 i32.const 1 i32.and - if - f64.const -1 - local.get $3 - f64.div - local.set $3 - end - local.get $3 + select f32.demote_f64 ) (func $std/math/test_tanf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) @@ -10464,7 +10456,7 @@ local.tee $2 i32.const 1071748074 i32.gt_u - if + if (result f64) local.get $2 i32.const 1077149696 i32.gt_u @@ -10486,12 +10478,11 @@ f64.div f64.sub end - local.set $1 else local.get $2 i32.const 1070618798 i32.gt_u - if + if (result f64) f64.const 2 local.get $1 f64.mul @@ -10501,12 +10492,11 @@ f64.const 2 f64.add f64.div - local.set $1 else local.get $2 i32.const 1048576 i32.ge_u - if + if (result f64) f64.const -2 local.get $1 f64.mul @@ -10517,11 +10507,11 @@ f64.const 2 f64.add f64.div - local.set $1 + else + local.get $1 end end end - local.get $1 local.get $0 f64.copysign ) @@ -10853,7 +10843,7 @@ i32.sub i32.const 49 i32.gt_u - if + if (result f64) local.get $2 f64.const 8.4784276603689e-32 f64.mul @@ -10873,8 +10863,10 @@ local.get $0 local.get $4 f64.sub - local.set $1 + else + local.get $1 end + local.set $1 end local.get $1 global.set $~lib/math/rempio2_y0 @@ -11168,9 +11160,7 @@ (local $3 i64) (local $4 i32) (local $5 i32) - (local $6 f64) - (local $7 f32) - (local $8 f32) + (local $6 f32) f64.const 2.718281828459045 global.get $~lib/bindings/Math/E f64.const 0 @@ -38388,11 +38378,11 @@ f32.reinterpret_i32 f32.const 1 f32.sub - local.tee $7 + local.tee $6 f32.const 1 f32.lt i32.const 0 - local.get $7 + local.get $6 f32.const 0 f32.ge select diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index fb949d1b7d..e96619941d 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -223,7 +223,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -243,35 +243,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -281,12 +281,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -294,7 +294,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -313,42 +313,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -363,12 +365,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -378,38 +380,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -427,7 +429,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -436,21 +438,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -477,7 +479,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -718,23 +720,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1300,7 +1301,6 @@ call $~lib/memory/memory.fill local.get $1 call $~lib/rt/pure/__retain - local.tee $0 ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) @@ -1404,12 +1404,12 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.const 3 @@ -1418,7 +1418,7 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $0 i32.load offset=8 local.tee $6 @@ -1428,27 +1428,27 @@ i32.shl i32.add local.set $7 - local.get $3 - local.set $4 + local.get $4 + local.set $2 loop $while-continue|0 local.get $6 local.get $7 i32.ne if local.get $6 - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $4 local.get $2 + local.get $3 i32.load8_s i32.store8 - local.get $4 - local.get $5 local.get $2 + local.get $5 + local.get $3 i32.load8_s call $~lib/util/hash/hash8 local.get $1 @@ -1456,16 +1456,16 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=4 + local.get $3 local.get $2 - local.get $4 i32.store - local.get $4 + local.get $2 i32.const 8 i32.add - local.set $4 + local.set $2 end local.get $6 i32.const 8 @@ -1475,42 +1475,42 @@ end end local.get $5 - local.tee $4 - local.get $0 local.tee $2 + local.get $0 + local.tee $3 i32.load local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $6 call $~lib/rt/pure/__release end + local.get $3 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 local.get $3 - local.tee $2 + local.set $1 + local.get $4 + local.tee $3 local.get $1 i32.load offset=8 - local.tee $4 + local.tee $2 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 $2 call $~lib/rt/pure/__release end local.get $1 - local.get $2 + local.get $3 i32.store offset=8 local.get $1 local.get $8 @@ -1521,7 +1521,7 @@ i32.store offset=16 local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) @@ -2062,7 +2062,7 @@ local.get $0 i32.load offset=16 local.tee $7 - local.set $3 + local.set $4 i32.const 16 i32.const 4 call $~lib/rt/tlsf/__alloc @@ -2079,7 +2079,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $3 + local.get $4 i32.const 1073741808 i32.gt_u if @@ -2090,37 +2090,37 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 + local.tee $2 + local.get $4 call $~lib/memory/memory.fill - local.get $1 - local.set $2 - local.get $1 + local.get $2 + local.set $3 + local.get $2 local.get $0 i32.load local.tee $8 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $8 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $3 i32.store local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 - local.get $3 + local.get $4 i32.store offset=12 loop $for-loop|0 local.get $5 @@ -2132,21 +2132,21 @@ i32.const 3 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 local.get $1 + local.get $2 i32.load8_s call $~lib/array/Array#__set - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 end local.get $5 i32.const 1 @@ -2156,7 +2156,7 @@ end end local.get $0 - local.get $4 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -2642,12 +2642,12 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.const 3 @@ -2656,7 +2656,7 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $0 i32.load offset=8 local.tee $6 @@ -2666,27 +2666,27 @@ i32.shl i32.add local.set $7 - local.get $3 - local.set $4 + local.get $4 + local.set $2 loop $while-continue|0 local.get $6 local.get $7 i32.ne if local.get $6 - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $4 local.get $2 + local.get $3 i32.load8_u i32.store8 - local.get $4 - local.get $5 local.get $2 + local.get $5 + local.get $3 i32.load8_u call $~lib/util/hash/hash8 local.get $1 @@ -2694,16 +2694,16 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=4 + local.get $3 local.get $2 - local.get $4 i32.store - local.get $4 + local.get $2 i32.const 8 i32.add - local.set $4 + local.set $2 end local.get $6 i32.const 8 @@ -2713,42 +2713,42 @@ end end local.get $5 - local.tee $4 - local.get $0 local.tee $2 + local.get $0 + local.tee $3 i32.load local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $6 call $~lib/rt/pure/__release end + local.get $3 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 local.get $3 - local.tee $2 + local.set $1 + local.get $4 + local.tee $3 local.get $1 i32.load offset=8 - local.tee $4 + local.tee $2 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release + local.set $3 + local.get $2 + call $~lib/rt/pure/__release end local.get $1 - local.get $2 + local.get $3 i32.store offset=8 local.get $1 local.get $8 @@ -2759,7 +2759,7 @@ i32.store offset=16 local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) @@ -2862,7 +2862,7 @@ local.get $0 i32.load offset=16 local.tee $7 - local.set $3 + local.set $4 i32.const 16 i32.const 6 call $~lib/rt/tlsf/__alloc @@ -2879,7 +2879,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $3 + local.get $4 i32.const 1073741808 i32.gt_u if @@ -2890,37 +2890,37 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 + local.tee $2 + local.get $4 call $~lib/memory/memory.fill - local.get $1 - local.set $2 - local.get $1 + local.get $2 + local.set $3 + local.get $2 local.get $0 i32.load local.tee $8 i32.ne if - local.get $2 + local.get $3 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $8 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $3 i32.store local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 - local.get $3 + local.get $4 i32.store offset=12 loop $for-loop|0 local.get $5 @@ -2932,21 +2932,21 @@ i32.const 3 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 local.get $1 + local.get $2 i32.load8_u call $~lib/array/Array#__set - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 end local.get $5 i32.const 1 @@ -2956,7 +2956,7 @@ end end local.get $0 - local.get $4 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -3459,12 +3459,12 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.const 3 @@ -3473,7 +3473,7 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $0 i32.load offset=8 local.tee $6 @@ -3483,27 +3483,27 @@ i32.shl i32.add local.set $7 - local.get $3 - local.set $4 + local.get $4 + local.set $2 loop $while-continue|0 local.get $6 local.get $7 i32.ne if local.get $6 - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $4 local.get $2 + local.get $3 i32.load16_s i32.store16 - local.get $4 - local.get $5 local.get $2 + local.get $5 + local.get $3 i32.load16_s call $~lib/util/hash/hash16 local.get $1 @@ -3511,16 +3511,16 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=4 + local.get $3 local.get $2 - local.get $4 i32.store - local.get $4 + local.get $2 i32.const 8 i32.add - local.set $4 + local.set $2 end local.get $6 i32.const 8 @@ -3530,42 +3530,42 @@ end end local.get $5 - local.tee $4 - local.get $0 local.tee $2 + local.get $0 + local.tee $3 i32.load local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $6 call $~lib/rt/pure/__release end + local.get $3 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 local.get $3 - local.tee $2 + local.set $1 + local.get $4 + local.tee $3 local.get $1 i32.load offset=8 - local.tee $4 + local.tee $2 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 $2 call $~lib/rt/pure/__release end local.get $1 - local.get $2 + local.get $3 i32.store offset=8 local.get $1 local.get $8 @@ -3576,7 +3576,7 @@ i32.store offset=16 local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) @@ -3728,11 +3728,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 8 call $~lib/rt/tlsf/__alloc @@ -3749,7 +3749,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 536870904 i32.gt_u if @@ -3760,76 +3760,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 1 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 3 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i32.load16_s call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -4284,12 +4284,12 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.const 3 @@ -4298,7 +4298,7 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $0 i32.load offset=8 local.tee $6 @@ -4308,27 +4308,27 @@ i32.shl i32.add local.set $7 - local.get $3 - local.set $4 + local.get $4 + local.set $2 loop $while-continue|0 local.get $6 local.get $7 i32.ne if local.get $6 - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $4 local.get $2 + local.get $3 i32.load16_u i32.store16 - local.get $4 - local.get $5 local.get $2 + local.get $5 + local.get $3 i32.load16_u call $~lib/util/hash/hash16 local.get $1 @@ -4336,16 +4336,16 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=4 + local.get $3 local.get $2 - local.get $4 i32.store - local.get $4 + local.get $2 i32.const 8 i32.add - local.set $4 + local.set $2 end local.get $6 i32.const 8 @@ -4355,42 +4355,42 @@ end end local.get $5 - local.tee $4 - local.get $0 local.tee $2 + local.get $0 + local.tee $3 i32.load local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $6 call $~lib/rt/pure/__release end + local.get $3 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 local.get $3 - local.tee $2 + local.set $1 + local.get $4 + local.tee $3 local.get $1 i32.load offset=8 - local.tee $4 + local.tee $2 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 $2 call $~lib/rt/pure/__release end local.get $1 - local.get $2 + local.get $3 i32.store offset=8 local.get $1 local.get $8 @@ -4401,7 +4401,7 @@ i32.store offset=16 local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) @@ -4501,11 +4501,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 10 call $~lib/rt/tlsf/__alloc @@ -4522,7 +4522,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 536870904 i32.gt_u if @@ -4533,76 +4533,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 1 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 3 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i32.load16_u call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -5117,12 +5117,12 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.const 3 @@ -5131,7 +5131,7 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $0 i32.load offset=8 local.tee $6 @@ -5141,27 +5141,27 @@ i32.shl i32.add local.set $7 - local.get $3 - local.set $4 + local.get $4 + local.set $2 loop $while-continue|0 local.get $6 local.get $7 i32.ne if local.get $6 - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $4 local.get $2 + local.get $3 i32.load i32.store - local.get $4 - local.get $5 local.get $2 + local.get $5 + local.get $3 i32.load call $~lib/util/hash/hash32 local.get $1 @@ -5169,16 +5169,16 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=4 + local.get $3 local.get $2 - local.get $4 i32.store - local.get $4 + local.get $2 i32.const 8 i32.add - local.set $4 + local.set $2 end local.get $6 i32.const 8 @@ -5188,42 +5188,42 @@ end end local.get $5 - local.tee $4 - local.get $0 local.tee $2 + local.get $0 + local.tee $3 i32.load local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $6 call $~lib/rt/pure/__release end + local.get $3 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 local.get $3 - local.tee $2 + local.set $1 + local.get $4 + local.tee $3 local.get $1 i32.load offset=8 - local.tee $4 + local.tee $2 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 $2 call $~lib/rt/pure/__release end local.get $1 - local.get $2 + local.get $3 i32.store offset=8 local.get $1 local.get $8 @@ -5234,7 +5234,7 @@ i32.store offset=16 local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) @@ -5382,11 +5382,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 12 call $~lib/rt/tlsf/__alloc @@ -5403,7 +5403,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 268435452 i32.gt_u if @@ -5414,76 +5414,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 2 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 3 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i32.load call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -5908,11 +5908,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 14 call $~lib/rt/tlsf/__alloc @@ -5929,7 +5929,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 268435452 i32.gt_u if @@ -5940,76 +5940,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 2 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 3 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i32.load call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -6469,12 +6469,12 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.const 3 @@ -6483,7 +6483,7 @@ i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $0 i32.load offset=8 local.tee $6 @@ -6493,27 +6493,27 @@ i32.shl i32.add local.set $7 - local.get $3 - local.set $4 + local.get $4 + local.set $2 loop $while-continue|0 local.get $6 local.get $7 i32.ne if local.get $6 - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $4 local.get $2 + local.get $3 i64.load i64.store - local.get $4 - local.get $5 local.get $2 + local.get $5 + local.get $3 i64.load call $~lib/util/hash/hash64 local.get $1 @@ -6521,16 +6521,16 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=8 + local.get $3 local.get $2 - local.get $4 i32.store - local.get $4 + local.get $2 i32.const 16 i32.add - local.set $4 + local.set $2 end local.get $6 i32.const 16 @@ -6540,42 +6540,42 @@ end end local.get $5 - local.tee $4 - local.get $0 local.tee $2 + local.get $0 + local.tee $3 i32.load local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $6 call $~lib/rt/pure/__release end + local.get $3 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 local.get $3 - local.tee $2 + local.set $1 + local.get $4 + local.tee $3 local.get $1 i32.load offset=8 - local.tee $4 + local.tee $2 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 $2 call $~lib/rt/pure/__release end local.get $1 - local.get $2 + local.get $3 i32.store offset=8 local.get $1 local.get $8 @@ -6586,7 +6586,7 @@ i32.store offset=16 local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) @@ -6734,11 +6734,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 16 call $~lib/rt/tlsf/__alloc @@ -6755,7 +6755,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 134217726 i32.gt_u if @@ -6766,76 +6766,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 3 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 4 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i64.load call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -7295,11 +7295,11 @@ (local $9 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $5 local.get $0 i32.load offset=16 - local.tee $7 - local.set $6 + local.tee $8 + local.set $7 i32.const 16 i32.const 18 call $~lib/rt/tlsf/__alloc @@ -7316,7 +7316,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $7 + local.get $8 i32.const 134217726 i32.gt_u if @@ -7327,76 +7327,76 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 3 i32.shl - local.tee $5 + local.tee $6 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $5 + local.tee $3 + local.get $6 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $5 + local.get $6 i32.store offset=8 local.get $0 - local.get $6 + local.get $7 i32.store offset=12 loop $for-loop|0 + local.get $9 local.get $8 - local.get $7 i32.lt_s if - local.get $4 - local.get $8 + local.get $5 + local.get $9 i32.const 4 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $9 - local.get $2 + local.get $1 + local.get $3 i64.load call $~lib/array/Array#__set - local.get $9 + local.get $1 i32.const 1 i32.add - local.set $9 + local.set $1 end - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $9 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -7792,12 +7792,12 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.const 3 @@ -7806,7 +7806,7 @@ i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $0 i32.load offset=8 local.tee $6 @@ -7816,27 +7816,27 @@ i32.shl i32.add local.set $7 - local.get $3 - local.set $4 + local.get $4 + local.set $2 loop $while-continue|0 local.get $6 local.get $7 i32.ne if local.get $6 - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $4 local.get $2 + local.get $3 f32.load f32.store - local.get $4 - local.get $5 local.get $2 + local.get $5 + local.get $3 f32.load i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -7845,16 +7845,16 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=4 + local.get $3 local.get $2 - local.get $4 i32.store - local.get $4 + local.get $2 i32.const 8 i32.add - local.set $4 + local.set $2 end local.get $6 i32.const 8 @@ -7864,42 +7864,42 @@ end end local.get $5 - local.tee $4 - local.get $0 local.tee $2 + local.get $0 + local.tee $3 i32.load local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $6 call $~lib/rt/pure/__release end + local.get $3 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 local.get $3 - local.tee $2 + local.set $1 + local.get $4 + local.tee $3 local.get $1 i32.load offset=8 - local.tee $4 + local.tee $2 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 $2 call $~lib/rt/pure/__release end local.get $1 - local.get $2 + local.get $3 i32.store offset=8 local.get $1 local.get $8 @@ -7910,7 +7910,7 @@ i32.store offset=16 local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 f32) (result i32) @@ -8000,8 +8000,8 @@ (func $~lib/set/Set#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 i32) + (local $3 i32) + (local $4 f32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -8010,11 +8010,11 @@ (local $10 i32) local.get $0 i32.load offset=8 - local.set $5 + local.set $6 local.get $0 i32.load offset=16 - local.tee $8 - local.set $7 + local.tee $9 + local.set $8 i32.const 16 i32.const 20 call $~lib/rt/tlsf/__alloc @@ -8031,7 +8031,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $8 + local.get $9 i32.const 268435452 i32.gt_u if @@ -8042,66 +8042,66 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $6 + local.tee $3 + local.get $7 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $4 + local.tee $5 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $4 + local.set $2 + local.get $5 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $7 i32.store offset=8 local.get $0 - local.get $7 + local.get $8 i32.store offset=12 loop $for-loop|0 + local.get $10 local.get $9 - local.get $8 i32.lt_s if - local.get $5 - local.get $9 + local.get $6 + local.get $10 i32.const 3 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $3 f32.load - local.set $3 - local.get $10 + local.set $4 + local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - local.get $10 + local.get $1 i32.const 0 i32.lt_s if @@ -8113,38 +8113,38 @@ unreachable end local.get $0 - local.get $10 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 call $~lib/array/ensureSize local.get $0 - local.get $2 + local.get $3 i32.store offset=12 end local.get $0 i32.load offset=4 - local.get $10 + local.get $1 i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 f32.store - local.get $10 + local.get $1 i32.const 1 i32.add - local.set $10 + local.set $1 end - local.get $9 + local.get $10 i32.const 1 i32.add - local.set $9 + local.set $10 br $for-loop|0 end end local.get $0 - local.get $10 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) @@ -8622,12 +8622,12 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.const 3 @@ -8636,7 +8636,7 @@ i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $0 i32.load offset=8 local.tee $6 @@ -8646,27 +8646,27 @@ i32.shl i32.add local.set $7 - local.get $3 - local.set $4 + local.get $4 + local.set $2 loop $while-continue|0 local.get $6 local.get $7 i32.ne if local.get $6 - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $4 local.get $2 + local.get $3 f64.load f64.store - local.get $4 - local.get $5 local.get $2 + local.get $5 + local.get $3 f64.load i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -8675,16 +8675,16 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=8 + local.get $3 local.get $2 - local.get $4 i32.store - local.get $4 + local.get $2 i32.const 16 i32.add - local.set $4 + local.set $2 end local.get $6 i32.const 16 @@ -8694,42 +8694,42 @@ end end local.get $5 - local.tee $4 - local.get $0 local.tee $2 + local.get $0 + local.tee $3 i32.load local.tee $6 i32.ne if - local.get $4 + local.get $2 call $~lib/rt/pure/__retain - local.set $4 + local.set $2 local.get $6 call $~lib/rt/pure/__release end + local.get $3 local.get $2 - local.get $4 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 - local.set $1 local.get $3 - local.tee $2 + local.set $1 + local.get $4 + local.tee $3 local.get $1 i32.load offset=8 - local.tee $4 + local.tee $2 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 $2 call $~lib/rt/pure/__release end local.get $1 - local.get $2 + local.get $3 i32.store offset=8 local.get $1 local.get $8 @@ -8740,7 +8740,7 @@ i32.store offset=16 local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (result i32) @@ -8830,8 +8830,8 @@ (func $~lib/set/Set#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 i32) + (local $3 i32) + (local $4 f64) (local $5 i32) (local $6 i32) (local $7 i32) @@ -8840,11 +8840,11 @@ (local $10 i32) local.get $0 i32.load offset=8 - local.set $5 + local.set $6 local.get $0 i32.load offset=16 - local.tee $8 - local.set $7 + local.tee $9 + local.set $8 i32.const 16 i32.const 22 call $~lib/rt/tlsf/__alloc @@ -8861,7 +8861,7 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $8 + local.get $9 i32.const 134217726 i32.gt_u if @@ -8872,66 +8872,66 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 i32.shl - local.tee $6 + local.tee $7 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $6 + local.tee $3 + local.get $7 call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 + local.get $3 + local.set $2 + local.get $3 local.get $0 i32.load - local.tee $4 + local.tee $5 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $4 + local.set $2 + local.get $5 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $7 i32.store offset=8 local.get $0 - local.get $7 + local.get $8 i32.store offset=12 loop $for-loop|0 + local.get $10 local.get $9 - local.get $8 i32.lt_s if - local.get $5 - local.get $9 + local.get $6 + local.get $10 i32.const 4 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $3 f64.load - local.set $3 - local.get $10 + local.set $4 + local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - local.get $10 + local.get $1 i32.const 0 i32.lt_s if @@ -8943,38 +8943,38 @@ unreachable end local.get $0 - local.get $10 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 3 call $~lib/array/ensureSize local.get $0 - local.get $2 + local.get $3 i32.store offset=12 end local.get $0 i32.load offset=4 - local.get $10 + local.get $1 i32.const 3 i32.shl i32.add - local.get $3 + local.get $4 f64.store - local.get $10 + local.get $1 i32.const 1 i32.add - local.set $10 + local.set $1 end - local.get $9 + local.get $10 i32.const 1 i32.add - local.set $9 + local.set $10 br $for-loop|0 end end local.get $0 - local.get $10 + local.get $1 call $~lib/array/Array#set:length local.get $0 ) diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index 25a05cd57c..b7be6b8b28 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -257,7 +257,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -277,35 +277,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -315,12 +315,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -328,7 +328,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -347,42 +347,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -397,12 +399,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -412,38 +414,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -461,7 +463,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -470,21 +472,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -511,7 +513,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -728,23 +730,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1568,10 +1569,10 @@ (local $4 i32) local.get $0 i32.load offset=4 - local.tee $4 + local.tee $3 i32.const 268435455 i32.and - local.set $2 + local.set $1 local.get $0 call $~lib/rt/rtrace/ondecrement local.get $0 @@ -1586,7 +1587,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.eq if @@ -1597,45 +1598,45 @@ local.get $0 i32.const 16 i32.add - local.tee $1 + local.tee $2 i32.const 8 i32.sub i32.load br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$7 $switch$1$default end - local.get $1 + local.get $2 i32.load - local.tee $2 + local.tee $1 if - local.get $2 + local.get $1 call $~lib/rt/pure/__visit end br $__inlined_func$~lib/rt/__visit_members end - local.get $1 - local.tee $2 local.get $2 + local.tee $1 + local.get $1 i32.const 16 i32.sub i32.load offset=12 i32.add - local.set $1 + local.set $2 loop $while-continue|0 - local.get $2 local.get $1 + local.get $2 i32.lt_u if - local.get $2 + local.get $1 i32.load - local.tee $3 + local.tee $4 if - local.get $3 + local.get $4 call $~lib/rt/pure/__visit end - local.get $2 + local.get $1 i32.const 4 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end @@ -1643,7 +1644,7 @@ end unreachable end - local.get $4 + local.get $3 i32.const -2147483648 i32.and if @@ -1666,7 +1667,7 @@ local.get $0 call $~lib/rt/rtrace/onfree else - local.get $2 + local.get $1 i32.const 0 i32.le_u if @@ -1678,10 +1679,10 @@ unreachable end local.get $0 - local.get $2 + local.get $1 i32.const 1 i32.sub - local.get $4 + local.get $3 i32.const -268435456 i32.and i32.or diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 368ba6a483..ea52e5f027 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -549,7 +549,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -569,35 +569,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -607,12 +607,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -620,7 +620,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -639,42 +639,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -689,12 +691,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -704,38 +706,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -753,7 +755,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -762,21 +764,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -803,7 +805,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -1044,23 +1046,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1999,14 +2000,12 @@ i32.sub i32.store16 else - i32.const -1 - local.set $1 local.get $2 i32.const 223 i32.sub i32.const 64056 i32.le_u - if + if (result i32) block $~lib/util/casemap/bsearch|inlined.0 (result i32) local.get $3 local.set $1 @@ -2057,9 +2056,10 @@ end i32.const -1 end - local.set $1 + else + i32.const -1 end - local.get $1 + local.tee $1 i32.const -1 i32.xor if @@ -2368,41 +2368,41 @@ (local $11 i32) local.get $0 call $~lib/string/String#get:length - local.tee $7 + local.tee $11 i32.eqz if local.get $0 call $~lib/rt/pure/__retain return end - local.get $7 + local.get $11 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $7 + local.get $4 + local.get $11 i32.lt_u if local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.shl i32.add i32.load16_u - local.tee $2 + local.tee $1 i32.const 7 i32.shr_u if block $for-continue|0 - local.get $5 - local.get $7 + local.get $4 + local.get $11 i32.const 1 i32.sub i32.lt_u i32.const 0 - local.get $2 + local.get $1 i32.const 55295 i32.sub i32.const 1025 @@ -2410,26 +2410,26 @@ select if local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.shl i32.add i32.load16_u offset=2 - local.tee $4 + local.tee $6 i32.const 56319 i32.sub i32.const 1025 i32.lt_u if - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 - local.get $4 + local.set $4 + local.get $6 i32.const 1023 i32.and - local.get $2 - local.tee $1 + local.get $1 + local.tee $2 i32.const 1023 i32.and i32.const 10 @@ -2437,127 +2437,127 @@ i32.or i32.const 65536 i32.add - local.tee $2 + local.tee $1 i32.const 131072 i32.ge_u if - local.get $10 - local.get $11 + local.get $9 + local.get $8 i32.const 1 i32.shl i32.add - local.get $1 - local.get $4 + local.get $2 + local.get $6 i32.const 16 i32.shl i32.or i32.store - local.get $11 + local.get $8 i32.const 1 i32.add - local.set $11 + local.set $8 br $for-continue|0 end end end - local.get $2 + local.get $1 i32.const 304 i32.eq if - local.get $10 - local.get $11 + local.get $9 + local.get $8 i32.const 1 i32.shl i32.add i32.const 50790505 i32.store - local.get $11 + local.get $8 i32.const 1 i32.add - local.set $11 + local.set $8 else - local.get $2 + local.get $1 i32.const 931 i32.eq if - local.get $10 - local.get $11 + local.get $9 + local.get $8 i32.const 1 i32.shl i32.add - local.get $7 + local.get $11 i32.const 1 i32.gt_u if (result i32) block $~lib/util/string/isFinalSigma|inlined.0 (result i32) local.get $0 - local.set $4 - local.get $5 + local.set $6 + local.get $4 i32.const 0 - local.set $9 + local.set $3 i32.const 0 - local.get $5 - local.tee $2 + local.get $4 + local.tee $1 i32.const 30 i32.sub - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.gt_s select - local.set $8 + local.set $10 loop $while-continue|1 - local.get $2 - local.get $8 + local.get $1 + local.get $10 i32.gt_s if block $~lib/util/string/codePointBefore|inlined.0 (result i32) - local.get $2 - local.set $1 + local.get $1 + local.set $2 i32.const -1 - local.get $2 + local.get $1 i32.const 0 i32.le_s br_if $~lib/util/string/codePointBefore|inlined.0 drop - local.get $4 - local.get $1 + local.get $6 + local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl i32.add i32.load16_u - local.tee $3 + local.tee $7 i32.const 64512 i32.and i32.const 56320 i32.eq - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.ge_s i32.and if - local.get $4 - local.get $1 + local.get $6 + local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl i32.add i32.load16_u - local.tee $1 + local.tee $2 i32.const 64512 i32.and i32.const 55296 i32.eq if - local.get $3 + local.get $7 i32.const 1023 i32.and - local.get $1 + local.get $2 i32.const 1023 i32.and i32.const 10 @@ -2569,22 +2569,22 @@ end end i32.const 65533 - local.get $3 - local.get $3 + local.get $7 + local.get $7 i32.const 63488 i32.and i32.const 55296 i32.eq select end - local.tee $1 - local.set $3 - local.get $1 + local.tee $2 + local.set $7 + local.get $2 i32.const 918000 i32.lt_u if (result i32) i32.const 6658 - local.get $3 + local.get $7 call $~lib/util/string/stagedBinaryLookup else i32.const 0 @@ -2592,12 +2592,12 @@ i32.eqz if i32.const 0 - local.get $1 + local.get $2 i32.const 127370 i32.lt_u if (result i32) i32.const 9666 - local.get $1 + local.get $2 call $~lib/util/string/stagedBinaryLookup else i32.const 0 @@ -2606,101 +2606,103 @@ br_if $~lib/util/string/isFinalSigma|inlined.0 drop i32.const 1 - local.set $9 + local.set $3 end - local.get $2 local.get $1 + local.get $2 i32.const 65536 i32.ge_s i32.const 1 i32.add i32.sub - local.set $2 + local.set $1 br $while-continue|1 end end i32.const 0 - local.get $9 + local.get $3 i32.eqz br_if $~lib/util/string/isFinalSigma|inlined.0 drop i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 30 i32.add - local.tee $1 - local.get $7 - local.get $1 - local.get $7 + local.tee $2 + local.get $11 + local.get $2 + local.get $11 i32.lt_s select - local.set $6 + local.set $5 loop $while-continue|2 - local.get $2 - local.get $6 + local.get $1 + local.get $5 i32.lt_s if - local.get $4 - local.get $2 + local.get $6 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u - local.tee $1 + local.tee $2 i32.const 64512 i32.and i32.const 55296 i32.eq - local.get $7 - local.get $2 + local.get $11 + local.get $1 i32.const 1 i32.add i32.ne i32.and - if - local.get $4 - local.get $2 + if (result i32) + local.get $6 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u offset=2 - local.tee $3 + local.tee $7 i32.const 64512 i32.and i32.const 56320 i32.eq - if - local.get $1 + if (result i32) + local.get $2 i32.const 10 i32.shl - local.get $3 + local.get $7 i32.add i32.const -56613888 i32.add - local.set $1 + else + local.get $2 end + else + local.get $2 end - local.get $1 - local.tee $3 + local.tee $7 i32.const 918000 i32.lt_u if (result i32) i32.const 6658 - local.get $3 + local.get $7 call $~lib/util/string/stagedBinaryLookup else i32.const 0 end i32.eqz if - local.get $3 - local.tee $2 + local.get $7 + local.tee $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 @@ -2708,14 +2710,14 @@ i32.eqz br $~lib/util/string/isFinalSigma|inlined.0 end - local.get $2 - local.get $3 + local.get $1 + local.get $7 i32.const 65536 i32.ge_u i32.const 1 i32.add i32.add - local.set $2 + local.set $1 br $while-continue|2 end end @@ -2731,53 +2733,53 @@ end i32.store16 else - local.get $2 + local.get $1 i32.const 9398 i32.sub i32.const 25 i32.le_u if - local.get $10 - local.get $11 + local.get $9 + local.get $8 i32.const 1 i32.shl i32.add - local.get $2 + local.get $1 i32.const 26 i32.add i32.store16 else - local.get $2 + local.get $1 i32.const 0 call $~lib/util/casemap/casemap i32.const 2097151 i32.and - local.tee $2 + local.tee $1 i32.const 65536 i32.lt_s if - local.get $10 - local.get $11 + local.get $9 + local.get $8 i32.const 1 i32.shl i32.add - local.get $2 + local.get $1 i32.store16 else - local.get $10 - local.get $11 + local.get $9 + local.get $8 i32.const 1 i32.shl i32.add - local.get $2 + local.get $1 i32.const 65536 i32.sub - local.tee $2 + local.tee $1 i32.const 10 i32.shr_u i32.const 55296 i32.or - local.get $2 + local.get $1 i32.const 1023 i32.and i32.const 56320 @@ -2786,23 +2788,23 @@ i32.shl i32.or i32.store - local.get $11 + local.get $8 i32.const 1 i32.add - local.set $11 + local.set $8 end end end end end else - local.get $10 - local.get $11 + local.get $9 + local.get $8 i32.const 1 i32.shl i32.add - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 65 i32.sub i32.const 26 @@ -2814,19 +2816,19 @@ i32.or i32.store16 end - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 - local.get $11 + local.set $4 + local.get $8 i32.const 1 i32.add - local.set $11 + local.set $8 br $for-loop|0 end end - local.get $10 - local.get $11 + local.get $9 + local.get $8 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc @@ -3187,8 +3189,8 @@ (local $0 i64) (local $1 i64) (local $2 i64) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i64) @@ -4428,11 +4430,11 @@ unreachable end loop $for-loop|0 - local.get $3 + local.get $4 i32.const 1114111 i32.le_s if - local.get $3 + local.get $4 call $~lib/string/String.fromCodePoint local.tee $12 call $~lib/string/String#toLowerCase @@ -4444,7 +4446,7 @@ i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $4 + local.set $3 local.get $5 i32.const 1 call $~lib/string/String#codePointAt @@ -4453,12 +4455,12 @@ i64.const 0 i64.ge_u if - local.get $4 + local.get $3 local.get $0 i64.const 16 i64.shl i64.add - local.set $4 + local.set $3 end local.get $5 i32.const 2 @@ -4468,12 +4470,12 @@ i64.const 0 i64.ge_u if - local.get $4 + local.get $3 local.get $0 i64.const 32 i64.shl i64.add - local.set $4 + local.set $3 end local.get $6 i32.const 0 @@ -4510,12 +4512,12 @@ i64.add local.set $0 end - local.get $3 + local.get $4 i32.const 0 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s local.set $1 - local.get $3 + local.get $4 i32.const 1 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s @@ -4530,7 +4532,7 @@ i64.add local.set $1 end - local.get $3 + local.get $4 i32.const 2 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s @@ -4545,12 +4547,12 @@ i64.add local.set $1 end - local.get $3 + local.get $4 i32.const 0 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s local.set $2 - local.get $3 + local.get $4 i32.const 1 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s @@ -4565,7 +4567,7 @@ i64.add local.set $2 end - local.get $3 + local.get $4 i32.const 2 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s @@ -4581,12 +4583,12 @@ local.set $2 end local.get $1 - local.get $4 + local.get $3 i64.ne if i32.const 18160 i32.const 1 - local.get $3 + local.get $4 f64.convert_i32_s f64.const 0 f64.const 0 @@ -4594,7 +4596,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 18240 - local.get $4 + local.get $3 call $~lib/util/number/utoa64 local.tee $8 call $~lib/string/String.__concat @@ -4634,7 +4636,7 @@ if i32.const 18720 i32.const 1 - local.get $3 + local.get $4 f64.convert_i32_s f64.const 0 f64.const 0 @@ -4682,10 +4684,10 @@ call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|0 end end diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 4198583166..4e7584b42c 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -290,7 +290,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -310,35 +310,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -348,12 +348,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -361,7 +361,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -380,42 +380,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -430,12 +432,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -445,38 +447,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -494,7 +496,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -503,21 +505,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -544,7 +546,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -785,23 +787,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -1671,15 +1672,15 @@ (local $7 i32) i32.const 1040 call $~lib/string/String.UTF16.encode - local.set $0 + local.set $1 i32.const 1040 call $~lib/string/String.UTF16.byteLength - local.set $7 - local.get $0 - local.tee $1 + local.set $2 + local.get $1 + local.tee $0 i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $6 + local.tee $3 i32.const 1296 call $~lib/string/String.__eq i32.eqz @@ -1691,10 +1692,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.get $7 + local.get $0 + local.get $2 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $5 + local.tee $4 i32.const 1040 call $~lib/string/String.__eq i32.eqz @@ -1706,10 +1707,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $4 + local.tee $5 i32.const 1312 call $~lib/string/String.__eq i32.eqz @@ -1721,12 +1722,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 2 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $3 + local.tee $6 i32.const 1344 call $~lib/string/String.__eq i32.eqz @@ -1738,12 +1739,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $2 + local.tee $7 i32.const 1376 call $~lib/string/String.__eq i32.eqz @@ -1755,12 +1756,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 8 i32.add i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $7 + local.tee $2 i32.const 1408 call $~lib/string/String.__eq i32.eqz @@ -1772,12 +1773,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 12 i32.add i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $1 + local.tee $0 i32.const 1296 call $~lib/string/String.__eq i32.eqz @@ -1789,22 +1790,22 @@ call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release - local.get $3 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $6 call $~lib/rt/pure/__release local.get $7 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release ) (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2887,17 +2888,17 @@ i32.const 1040 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $0 + local.set $1 i32.const 1040 i32.const 0 call $~lib/string/String.UTF8.byteLength - local.set $9 - local.get $0 - local.tee $1 + local.set $2 + local.get $1 + local.tee $0 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $8 + local.tee $3 i32.const 1296 call $~lib/string/String.__eq i32.eqz @@ -2909,11 +2910,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.get $9 + local.get $0 + local.get $2 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $7 + local.tee $4 i32.const 1040 call $~lib/string/String.__eq i32.eqz @@ -2925,11 +2926,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $6 + local.tee $5 i32.const 1312 call $~lib/string/String.__eq i32.eqz @@ -2941,13 +2942,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 2 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $5 + local.tee $6 i32.const 1376 call $~lib/string/String.__eq i32.eqz @@ -2959,13 +2960,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 6 i32.add i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $4 + local.tee $7 i32.const 1408 call $~lib/string/String.__eq i32.eqz @@ -2977,13 +2978,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.add i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 + local.tee $8 i32.const 1296 call $~lib/string/String.__eq i32.eqz @@ -2995,13 +2996,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $2 + local.tee $9 i32.const 1552 call $~lib/string/String.__eq i32.eqz @@ -3013,13 +3014,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 6 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $9 + local.tee $2 i32.const 1408 call $~lib/string/String.__eq i32.eqz @@ -3031,13 +3032,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $1 + local.tee $0 i32.const 1296 call $~lib/string/String.__eq i32.eqz @@ -3049,26 +3050,26 @@ call $~lib/builtins/abort unreachable end - local.get $8 - 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 local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $6 call $~lib/rt/pure/__release - local.get $3 + local.get $7 call $~lib/rt/pure/__release - local.get $2 + local.get $8 call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release ) (func $std/string-encoding/testLarge (param $0 i32) (local $1 i32) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index b234ec54c2..d7e5492b46 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -863,7 +863,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -883,35 +883,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -921,12 +921,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -934,7 +934,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -953,42 +953,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -1003,12 +1005,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -1018,38 +1020,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -1067,7 +1069,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -1076,21 +1078,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -1117,7 +1119,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -1358,23 +1360,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -2655,7 +2656,7 @@ local.get $1 i32.const 45 i32.eq - if + if (result i32) local.get $0 i32.const 1 i32.sub @@ -2669,12 +2670,11 @@ i32.add local.tee $2 i32.load16_u - local.set $1 else local.get $1 i32.const 43 i32.eq - if + if (result i32) local.get $0 i32.const 1 i32.sub @@ -2686,9 +2686,11 @@ i32.add local.tee $2 i32.load16_u - local.set $1 + else + local.get $1 end end + local.set $1 local.get $0 i32.const 2 i32.gt_s @@ -2882,7 +2884,7 @@ local.get $1 i32.const 45 i32.eq - if + if (result i32) local.get $0 i32.const 1 i32.sub @@ -2896,12 +2898,11 @@ i32.add local.tee $2 i32.load16_u - local.set $1 else local.get $1 i32.const 43 i32.eq - if + if (result i32) local.get $0 i32.const 1 i32.sub @@ -2913,9 +2914,11 @@ i32.add local.tee $2 i32.load16_u - local.set $1 + else + local.get $1 end end + local.set $1 local.get $0 i32.const 2 i32.gt_s @@ -3098,7 +3101,7 @@ local.get $1 i32.const 45 i32.eq - if + if (result i32) local.get $0 i32.const 1 i32.sub @@ -3112,12 +3115,11 @@ i32.add local.tee $2 i32.load16_u - local.set $1 else local.get $1 i32.const 43 i32.eq - if + if (result i32) local.get $0 i32.const 1 i32.sub @@ -3129,9 +3131,11 @@ i32.add local.tee $2 i32.load16_u - local.set $1 + else + local.get $1 end end + local.set $1 local.get $0 i32.const 2 i32.gt_s @@ -3390,36 +3394,36 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i64) + (local $6 i64) + (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 f64) (local $10 i64) - (local $11 i64) - (local $12 f64) + (local $11 f64) + (local $12 i64) (local $13 i64) - (local $14 f64) + (local $14 i32) (local $15 i32) - (local $16 i32) - (local $17 i64) + (local $16 i64) + (local $17 i32) block $folding-inner0 local.get $0 call $~lib/rt/pure/__retain - local.tee $5 + local.tee $3 call $~lib/string/String#get:length - local.tee $6 + local.tee $17 i32.eqz br_if $folding-inner0 - local.get $5 + local.get $3 local.tee $0 i32.load16_u - local.set $8 + local.set $15 f64.const 1 - local.set $14 + local.set $9 loop $while-continue|0 - local.get $6 + local.get $17 if (result i32) - local.get $8 + local.get $15 call $~lib/util/string/isSpace else i32.const 0 @@ -3430,43 +3434,43 @@ i32.add local.tee $0 i32.load16_u - local.set $8 - local.get $6 + local.set $15 + local.get $17 i32.const 1 i32.sub - local.set $6 + local.set $17 br $while-continue|0 end end - local.get $6 + local.get $17 i32.eqz br_if $folding-inner0 - local.get $8 + local.get $15 i32.const 45 i32.eq if (result i32) - local.get $6 + local.get $17 i32.const 1 i32.sub - local.tee $6 + local.tee $17 i32.eqz br_if $folding-inner0 f64.const -1 - local.set $14 + local.set $9 local.get $0 i32.const 2 i32.add local.tee $0 i32.load16_u else - local.get $8 + local.get $15 i32.const 43 i32.eq if (result i32) - local.get $6 + local.get $17 i32.const 1 i32.sub - local.tee $6 + local.tee $17 i32.eqz br_if $folding-inner0 local.get $0 @@ -3475,14 +3479,14 @@ local.tee $0 i32.load16_u else - local.get $8 + local.get $15 end end - local.tee $8 + local.tee $15 i32.const 73 i32.eq i32.const 0 - local.get $6 + local.get $17 i32.const 8 i32.ge_s select @@ -3500,22 +3504,22 @@ i32.const 0 end if - local.get $5 + local.get $3 call $~lib/rt/pure/__release f64.const inf - local.get $14 + local.get $9 f64.copysign return end br $folding-inner0 end - local.get $8 + local.get $15 i32.const 48 i32.sub i32.const 10 i32.ge_u i32.const 0 - local.get $8 + local.get $15 i32.const 46 i32.ne select @@ -3523,7 +3527,7 @@ local.get $0 local.set $4 loop $while-continue|1 - local.get $8 + local.get $15 i32.const 48 i32.eq if @@ -3532,24 +3536,24 @@ i32.add local.tee $0 i32.load16_u - local.set $8 - local.get $6 + local.set $15 + local.get $17 i32.const 1 i32.sub - local.set $6 + local.set $17 br $while-continue|1 end end - local.get $6 + local.get $17 i32.const 0 i32.le_s if - local.get $5 + local.get $3 call $~lib/rt/pure/__release f64.const 0 return end - local.get $8 + local.get $15 i32.const 46 i32.eq if @@ -3562,10 +3566,10 @@ i32.const 2 i32.add local.set $0 - local.get $6 + local.get $17 i32.const 1 i32.sub - local.tee $6 + local.tee $17 if (result i32) i32.const 0 else @@ -3573,22 +3577,22 @@ end br_if $folding-inner0 i32.const 1 - local.set $15 + local.set $8 loop $for-loop|2 local.get $0 i32.load16_u - local.tee $8 + local.tee $15 i32.const 48 i32.eq if - local.get $6 + local.get $17 i32.const 1 i32.sub - local.set $6 - local.get $2 + local.set $17 + local.get $1 i32.const 1 i32.sub - local.set $2 + local.set $1 local.get $0 i32.const 2 i32.add @@ -3596,16 +3600,16 @@ br $for-loop|2 end end - local.get $6 + local.get $17 i32.const 0 i32.le_s if - local.get $5 + local.get $3 call $~lib/rt/pure/__release f64.const 0 return end - local.get $8 + local.get $15 i32.const 48 i32.sub i32.const 10 @@ -3613,65 +3617,65 @@ i32.const 0 i32.const 0 local.get $4 - local.get $2 + local.get $1 select select br_if $folding-inner0 end - local.get $8 + local.get $15 i32.const 48 i32.sub - local.set $9 + local.set $14 loop $for-loop|3 i32.const 1 - local.get $15 + local.get $8 i32.eqz i32.const 0 - local.get $8 + local.get $15 i32.const 46 i32.eq select - local.get $9 + local.get $14 i32.const 10 i32.lt_u select if block $for-break3 - local.get $9 + local.get $14 i32.const 10 i32.lt_u if - local.get $9 + local.get $14 i64.extend_i32_u - local.get $7 + local.get $16 i64.const 10 i64.mul i64.add - local.get $7 - local.get $9 + local.get $16 + local.get $14 i32.eqz i32.eqz i64.extend_i32_u i64.or - local.get $1 + local.get $2 i32.const 19 i32.lt_s select - local.set $7 - local.get $1 + local.set $16 + local.get $2 i32.const 1 i32.add - local.set $1 - else - local.get $1 local.set $2 + else + local.get $2 + local.set $1 i32.const 1 - local.set $15 + local.set $8 end - local.get $6 + local.get $17 i32.const 1 i32.sub - local.tee $6 + local.tee $17 i32.eqz br_if $for-break3 local.get $0 @@ -3679,74 +3683,74 @@ i32.add local.tee $0 i32.load16_u - local.tee $8 + local.tee $15 i32.const 48 i32.sub - local.set $9 + local.set $14 br $for-loop|3 end end end - local.get $2 local.get $1 - local.get $15 + local.get $2 + local.get $8 select i32.const 19 - local.get $1 + local.get $2 i32.const 19 - local.get $1 + local.get $2 i32.lt_s select i32.sub local.set $4 i32.const 1 - local.set $1 + local.set $2 block $~lib/util/string/parseExp|inlined.0 local.get $0 - local.tee $2 + local.tee $1 i32.load16_u i32.const 32 i32.or i32.const 101 i32.ne br_if $~lib/util/string/parseExp|inlined.0 - local.get $2 + local.get $1 i32.const 2 i32.add - local.tee $9 + local.tee $14 i32.load16_u local.tee $0 i32.const 45 i32.eq if (result i32) - local.get $6 + local.get $17 i32.const 1 i32.sub - local.tee $6 + local.tee $17 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 i32.const -1 - local.set $1 - local.get $9 + local.set $2 + local.get $14 i32.const 2 i32.add - local.tee $9 + local.tee $14 i32.load16_u else local.get $0 i32.const 43 i32.eq if (result i32) - local.get $6 + local.get $17 i32.const 1 i32.sub - local.tee $6 + local.tee $17 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 - local.get $9 + local.get $14 i32.const 2 i32.add - local.tee $9 + local.tee $14 i32.load16_u else local.get $0 @@ -3758,16 +3762,16 @@ i32.const 48 i32.eq if - local.get $6 + local.get $17 i32.const 1 i32.sub - local.tee $6 + local.tee $17 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 - local.get $9 + local.get $14 i32.const 2 i32.add - local.tee $9 + local.tee $14 i32.load16_u local.set $0 br $while-continue|4 @@ -3782,33 +3786,33 @@ i32.const 10 i32.lt_u i32.const 0 - local.get $6 + local.get $17 select if - local.get $3 + local.get $5 i32.const 3200 i32.ge_s if - local.get $1 + local.get $2 i32.const 3200 i32.mul - local.set $16 + local.set $7 br $~lib/util/string/parseExp|inlined.0 end local.get $0 - local.get $3 + local.get $5 i32.const 10 i32.mul i32.add - local.set $3 - local.get $6 + local.set $5 + local.get $17 i32.const 1 i32.sub - local.set $6 - local.get $9 + local.set $17 + local.get $14 i32.const 2 i32.add - local.tee $9 + local.tee $14 i32.load16_u i32.const 48 i32.sub @@ -3816,20 +3820,20 @@ br $for-loop|5 end end - local.get $1 - local.get $3 + local.get $2 + local.get $5 i32.mul - local.set $16 + local.set $7 end block $~lib/util/string/scientific|inlined.0 i32.const 1 local.get $4 - local.get $16 + local.get $7 i32.add local.tee $0 i32.const -342 i32.lt_s - local.get $7 + local.get $16 i64.eqz select br_if $~lib/util/string/scientific|inlined.0 @@ -3838,12 +3842,12 @@ i32.gt_s if f64.const inf - local.set $12 + local.set $11 br $~lib/util/string/scientific|inlined.0 end - local.get $7 + local.get $16 f64.convert_i64_u - local.set $12 + local.set $11 local.get $0 i32.eqz br_if $~lib/util/string/scientific|inlined.0 @@ -3856,7 +3860,7 @@ i32.gt_s select if - local.get $12 + local.get $11 local.get $0 i32.const 3 i32.shl @@ -3864,20 +3868,20 @@ i32.add f64.load f64.mul - local.set $12 + local.set $11 i32.const 22 local.set $0 end - local.get $7 + local.get $16 i64.const 9007199254740991 i64.le_u if (result i32) local.get $0 i32.const 31 i32.shr_s - local.tee $1 + local.tee $2 local.get $0 - local.get $1 + local.get $2 i32.add i32.xor i32.const 22 @@ -3890,7 +3894,7 @@ i32.const 0 i32.gt_s if - local.get $12 + local.get $11 local.get $0 i32.const 3 i32.shl @@ -3898,10 +3902,10 @@ i32.add f64.load f64.mul - local.set $12 + local.set $11 br $~lib/util/string/scientific|inlined.0 end - local.get $12 + local.get $11 i32.const 0 local.get $0 i32.sub @@ -3916,33 +3920,33 @@ i32.const 0 i32.lt_s if (result f64) - local.get $7 - local.get $7 + local.get $16 + local.get $16 i64.clz - local.tee $10 + local.tee $13 i64.shl - local.set $7 + local.set $16 local.get $0 - local.tee $1 + local.tee $2 i64.extend_i32_s - local.get $10 + local.get $13 i64.sub - local.set $10 + local.set $13 loop $for-loop|6 - local.get $1 + local.get $2 i32.const -14 i32.le_s if f64.const 0.00004294967296 - local.get $7 + local.get $16 i64.const 6103515625 i64.rem_u - local.get $7 + local.get $16 i64.const 6103515625 i64.div_u - local.tee $13 + local.tee $10 i64.clz - local.tee $11 + local.tee $12 i64.const 18 i64.sub i64.shl @@ -3950,91 +3954,91 @@ f64.mul f64.nearest i64.trunc_f64_u - local.get $13 - local.get $11 + local.get $10 + local.get $12 i64.shl i64.add - local.set $7 - local.get $10 - local.get $11 + local.set $16 + local.get $13 + local.get $12 i64.sub - local.set $10 - local.get $1 + local.set $13 + local.get $2 i32.const 14 i32.add - local.set $1 + local.set $2 br $for-loop|6 end end - local.get $7 + local.get $16 i32.const 0 - local.get $1 + local.get $2 i32.sub call $~lib/math/ipow32 i64.extend_i32_s - local.tee $13 + local.tee $10 i64.div_u - local.tee $17 + local.tee $6 i64.clz - local.set $11 - local.get $7 - local.get $13 + local.set $12 + local.get $16 + local.get $10 i64.rem_u f64.convert_i64_u i64.reinterpret_f64 - local.get $11 + local.get $12 i64.const 52 i64.shl i64.add f64.reinterpret_i64 - local.get $13 + local.get $10 f64.convert_i64_u f64.div i64.trunc_f64_u - local.get $17 - local.get $11 + local.get $6 + local.get $12 i64.shl i64.add f64.convert_i64_u - local.get $10 - local.get $11 + local.get $13 + local.get $12 i64.sub i32.wrap_i64 call $~lib/math/NativeMath.scalbn else - local.get $7 - local.get $7 + local.get $16 + local.get $16 i64.ctz - local.tee $10 + local.tee $13 i64.shr_u - local.set $7 - local.get $10 + local.set $16 + local.get $13 local.get $0 - local.tee $3 + local.tee $5 i64.extend_i32_s i64.add global.set $~lib/util/string/__fixmulShift loop $for-loop|7 - local.get $3 + local.get $5 i32.const 13 i32.ge_s if i64.const 32 - local.get $7 + local.get $16 i64.const 32 i64.shr_u i64.const 1220703125 i64.mul - local.get $7 + local.get $16 i64.const 4294967295 i64.and i64.const 1220703125 i64.mul - local.tee $7 + local.tee $16 i64.const 32 i64.shr_u i64.add - local.tee $10 + local.tee $13 i64.const 32 i64.shr_u i32.wrap_i64 @@ -4042,11 +4046,11 @@ local.tee $0 i64.extend_i32_u i64.sub - local.tee $11 + local.tee $12 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift - local.get $7 + local.get $16 local.get $0 i64.extend_i32_u i64.shl @@ -4054,46 +4058,46 @@ i64.shr_u i64.const 1 i64.and - local.get $10 + local.get $13 local.get $0 i64.extend_i32_u i64.shl - local.get $7 + local.get $16 i64.const 4294967295 i64.and - local.get $11 + local.get $12 i64.shr_u i64.or i64.add - local.set $7 - local.get $3 + local.set $16 + local.get $5 i32.const 13 i32.sub - local.set $3 + local.set $5 br $for-loop|7 end end - local.get $3 + local.get $5 call $~lib/math/ipow32 local.tee $0 i64.extend_i32_u - local.get $7 + local.get $16 i64.const 4294967295 i64.and i64.mul - local.set $10 + local.set $13 i64.const 32 local.get $0 i64.extend_i32_u - local.get $7 + local.get $16 i64.const 32 i64.shr_u i64.mul - local.get $10 + local.get $13 i64.const 32 i64.shr_u i64.add - local.tee $7 + local.tee $16 i64.const 32 i64.shr_u i32.wrap_i64 @@ -4101,11 +4105,11 @@ local.tee $0 i64.extend_i32_u i64.sub - local.tee $11 + local.tee $12 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift - local.get $10 + local.get $13 local.get $0 i64.extend_i32_u i64.shl @@ -4113,14 +4117,14 @@ i64.shr_u i64.const 1 i64.and - local.get $7 + local.get $16 local.get $0 i64.extend_i32_u i64.shl - local.get $10 + local.get $13 i64.const 4294967295 i64.and - local.get $11 + local.get $12 i64.shr_u i64.or i64.add @@ -4130,16 +4134,16 @@ call $~lib/math/NativeMath.scalbn end end - local.set $12 + local.set $11 end - local.get $5 + local.get $3 call $~lib/rt/pure/__release - local.get $12 - local.get $14 + local.get $11 + local.get $9 f64.copysign return end - local.get $5 + local.get $3 call $~lib/rt/pure/__release f64.const nan:0x8000000000000 ) @@ -4760,13 +4764,13 @@ block $folding-inner0 local.get $0 call $~lib/string/String#get:length - local.tee $3 + local.tee $4 local.get $7 call $~lib/string/String#get:length local.tee $10 i32.le_u if - local.get $3 + local.get $4 local.get $10 i32.lt_u if (result i32) @@ -4798,9 +4802,9 @@ local.set $0 br $folding-inner0 end - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.add i32.mul @@ -4809,7 +4813,7 @@ i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.tee $4 + local.tee $3 local.get $5 local.get $2 i32.const 1 @@ -4819,10 +4823,10 @@ local.set $1 loop $for-loop|0 local.get $9 - local.get $3 + local.get $4 i32.lt_u if - local.get $4 + local.get $3 local.get $1 i32.const 1 i32.shl @@ -4834,7 +4838,7 @@ i32.add i32.load16_u i32.store16 - local.get $4 + local.get $3 local.get $1 i32.const 1 i32.add @@ -4858,7 +4862,7 @@ br $for-loop|0 end end - local.get $4 + local.get $3 call $~lib/rt/pure/__retain local.set $0 br $folding-inner0 @@ -4867,27 +4871,27 @@ local.get $10 i32.eq if - local.get $3 + local.get $4 i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $0 - local.get $3 + local.get $4 call $~lib/memory/memory.copy loop $while-continue|1 local.get $0 local.get $7 local.get $6 call $~lib/string/String#indexOf - local.tee $3 + local.tee $4 i32.const -1 i32.xor if local.get $1 - local.get $3 + local.get $4 i32.const 1 i32.shl i32.add @@ -4896,7 +4900,7 @@ i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $4 local.get $10 i32.add local.set $6 @@ -4908,7 +4912,7 @@ local.set $0 br $folding-inner0 end - local.get $3 + local.get $4 local.set $1 loop $while-continue|2 local.get $0 @@ -4919,21 +4923,21 @@ i32.const -1 i32.xor if - local.get $4 + local.get $3 i32.eqz if - local.get $3 + local.get $4 i32.const 1 i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $4 + local.set $3 end local.get $8 local.get $1 i32.gt_u if - local.get $4 + local.get $3 local.get $1 i32.const 1 i32.shl @@ -4941,9 +4945,9 @@ i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc - local.set $4 + local.set $3 end - local.get $4 + local.get $3 local.get $8 i32.const 1 i32.shl @@ -4960,7 +4964,7 @@ i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $3 local.get $6 local.get $8 i32.add @@ -4990,7 +4994,7 @@ local.get $1 i32.gt_u if - local.get $4 + local.get $3 local.get $1 i32.const 1 i32.shl @@ -4998,14 +5002,14 @@ i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc - local.set $4 + local.set $3 end - local.get $3 + local.get $4 local.get $6 i32.sub local.tee $2 if - local.get $4 + local.get $3 local.get $8 i32.const 1 i32.shl @@ -5027,13 +5031,13 @@ local.tee $0 i32.gt_u if (result i32) - local.get $4 + local.get $3 local.get $0 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc else - local.get $4 + local.get $3 end call $~lib/rt/pure/__retain local.set $0 @@ -8075,14 +8079,14 @@ global.get $std/string/str local.set $12 i32.const 1616 - local.tee $1 - i32.eqz - if + if (result i32) + i32.const 1616 + else i32.const 1616 call $~lib/rt/pure/__release - i32.const 1648 - local.set $1 + i32.const 0 end + drop block $__inlined_func$~lib/string/String#startsWith i32.const 0 local.get $12 @@ -8093,14 +8097,14 @@ i32.lt_s select local.tee $9 - local.get $1 + i32.const 1616 call $~lib/string/String#get:length local.tee $0 i32.add local.get $3 i32.gt_s if - local.get $1 + i32.const 1616 call $~lib/rt/pure/__release i32.const 0 local.set $0 @@ -8108,12 +8112,12 @@ end local.get $12 local.get $9 - local.get $1 + i32.const 1616 local.get $0 call $~lib/util/string/compareImpl i32.eqz local.set $0 - local.get $1 + i32.const 1616 call $~lib/rt/pure/__release end local.get $0 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 6b517d95f5..d079fc65d5 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -400,7 +400,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -420,35 +420,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -458,12 +458,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -471,7 +471,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -490,42 +490,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -540,12 +542,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -555,38 +557,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -604,7 +606,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -613,21 +615,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -654,7 +656,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -895,23 +897,22 @@ i32.shr_u local.set $1 else + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 local.get $1 i32.const 536870904 i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + select + local.tee $1 i32.const 31 local.get $1 i32.clz @@ -2346,66 +2347,66 @@ (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 f64) - (local $6 i32) + (local $6 f64) loop $for-loop|0 - local.get $6 + local.get $4 local.get $1 i32.lt_s if local.get $0 - local.get $6 + local.get $4 i32.const 3 i32.shl i32.add f64.load local.set $5 - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $3 + local.set $2 loop $while-continue|1 - local.get $3 + local.get $2 i32.const 0 i32.ge_s if block $while-break|1 local.get $0 - local.get $3 + local.get $2 i32.const 3 i32.shl i32.add f64.load - local.set $4 + local.set $6 i32.const 2 global.set $~argumentsLength local.get $5 - local.get $4 + local.get $6 call $~lib/util/sort/COMPARATOR~anonymous|0 i32.const 0 i32.ge_s br_if $while-break|1 - local.get $3 - local.tee $2 + local.get $2 + local.tee $3 i32.const 1 i32.sub - local.set $3 + local.set $2 local.get $0 - local.get $2 + local.get $3 i32.const 1 i32.add i32.const 3 i32.shl i32.add - local.get $4 + local.get $6 f64.store br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.add i32.const 3 @@ -2413,10 +2414,10 @@ i32.add local.get $5 f64.store - local.get $6 + local.get $4 i32.const 1 i32.add - local.set $6 + local.set $4 br $for-loop|0 end end @@ -5578,7 +5579,7 @@ i32.const 12 i32.const 6 call $~lib/rt/tlsf/__alloc - local.set $2 + local.set $3 local.get $0 i32.const 1 i32.shl @@ -5589,12 +5590,12 @@ i32.load offset=4 local.set $7 loop $for-loop|0 - local.get $1 + local.get $2 local.get $0 i32.lt_s if local.get $7 - local.get $1 + local.get $2 i32.const 1 i32.shl i32.add @@ -5603,46 +5604,46 @@ i32.const 3 global.set $~argumentsLength local.get $6 - local.get $1 + local.get $2 local.get $4 call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 if local.get $5 - local.get $3 + local.get $1 i32.const 1 i32.shl i32.add local.get $6 i32.store16 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end - local.get $2 - local.get $5 local.get $3 + local.get $5 + local.get $1 i32.const 1 i32.shl local.tee $0 call $~lib/rt/tlsf/__realloc - local.tee $1 + local.tee $2 call $~lib/rt/pure/__retain i32.store - local.get $2 + local.get $3 local.get $0 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 i32.store offset=4 - local.get $2 + local.get $3 call $~lib/rt/pure/__retain local.get $4 call $~lib/rt/pure/__release @@ -5772,7 +5773,7 @@ i32.const 12 i32.const 7 call $~lib/rt/tlsf/__alloc - local.set $2 + local.set $3 local.get $0 i32.const 1 i32.shl @@ -5783,12 +5784,12 @@ i32.load offset=4 local.set $7 loop $for-loop|0 - local.get $1 + local.get $2 local.get $0 i32.lt_s if local.get $7 - local.get $1 + local.get $2 i32.const 1 i32.shl i32.add @@ -5797,46 +5798,46 @@ i32.const 3 global.set $~argumentsLength local.get $6 - local.get $1 + local.get $2 local.get $4 call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 if local.get $5 - local.get $3 + local.get $1 i32.const 1 i32.shl i32.add local.get $6 i32.store16 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end - local.get $2 - local.get $5 local.get $3 + local.get $5 + local.get $1 i32.const 1 i32.shl local.tee $0 call $~lib/rt/tlsf/__realloc - local.tee $1 + local.tee $2 call $~lib/rt/pure/__retain i32.store - local.get $2 + local.get $3 local.get $0 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 i32.store offset=4 - local.get $2 + local.get $3 call $~lib/rt/pure/__retain local.get $4 call $~lib/rt/pure/__release @@ -8469,7 +8470,7 @@ local.get $1 i32.const 8388608 i32.ge_u - if + if (result i32) local.get $1 i32.const 8388608 i32.eq @@ -8477,9 +8478,9 @@ local.get $1 i32.const 8388608 i32.sub - local.set $1 + else + local.get $1 end - local.get $1 i32.const 1 i32.shl local.set $1 @@ -8684,7 +8685,7 @@ local.get $1 i64.const 4503599627370496 i64.ge_u - if + if (result i64) local.get $1 i64.const 4503599627370496 i64.eq @@ -8692,9 +8693,9 @@ local.get $1 i64.const 4503599627370496 i64.sub - local.set $1 + else + local.get $1 end - local.get $1 i64.const 1 i64.shl local.set $1 @@ -17839,15 +17840,16 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 i32.const 1 i32.sub @@ -17855,7 +17857,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 2928 return @@ -17866,12 +17868,12 @@ local.get $0 i32.load8_s call $~lib/util/number/itoa32 - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end local.get $4 - local.get $2 + local.get $3 call $~lib/string/String#get:length local.tee $5 i32.const 11 @@ -17892,7 +17894,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -17901,25 +17903,25 @@ i32.add i32.load8_s call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $5 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $5 i32.add - local.set $3 + local.set $2 end local.get $6 i32.const 1 @@ -17930,7 +17932,7 @@ end local.get $7 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -17939,7 +17941,7 @@ i32.add i32.load8_s call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -17947,13 +17949,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -17962,7 +17964,6 @@ i32.load offset=4 local.get $0 i32.load offset=8 - i32.const 3264 call $~lib/util/string/joinIntegerArray i32.const 3264 call $~lib/rt/pure/__release @@ -18160,15 +18161,16 @@ call $~lib/util/number/utoa_dec_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 i32.const 1 i32.sub @@ -18176,7 +18178,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 2928 return @@ -18187,12 +18189,12 @@ local.get $0 i32.load8_u call $~lib/util/number/utoa32 - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end local.get $4 - local.get $2 + local.get $3 call $~lib/string/String#get:length local.tee $5 i32.const 10 @@ -18213,7 +18215,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18222,25 +18224,25 @@ i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $5 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $5 i32.add - local.set $3 + local.set $2 end local.get $6 i32.const 1 @@ -18251,7 +18253,7 @@ end local.get $7 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18260,7 +18262,7 @@ i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -18268,13 +18270,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -18283,7 +18285,6 @@ i32.load offset=4 local.get $0 i32.load offset=8 - i32.const 3264 call $~lib/util/string/joinIntegerArray i32.const 3264 call $~lib/rt/pure/__release @@ -18349,15 +18350,16 @@ call $~lib/util/number/utoa_dec_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 i32.const 1 i32.sub @@ -18365,7 +18367,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 2928 return @@ -18376,12 +18378,12 @@ local.get $0 i32.load16_s call $~lib/util/number/itoa32 - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end local.get $4 - local.get $2 + local.get $3 call $~lib/string/String#get:length local.tee $5 i32.const 11 @@ -18402,7 +18404,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18413,25 +18415,25 @@ i32.add i32.load16_s call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $5 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $5 i32.add - local.set $3 + local.set $2 end local.get $6 i32.const 1 @@ -18442,7 +18444,7 @@ end local.get $7 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18453,7 +18455,7 @@ i32.add i32.load16_s call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -18461,13 +18463,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -18478,7 +18480,6 @@ i32.load offset=8 i32.const 1 i32.shr_u - i32.const 3264 call $~lib/util/string/joinIntegerArray i32.const 3264 call $~lib/rt/pure/__release @@ -18513,15 +18514,16 @@ call $~lib/util/number/utoa_dec_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 i32.const 1 i32.sub @@ -18529,7 +18531,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 2928 return @@ -18540,12 +18542,12 @@ local.get $0 i32.load16_u call $~lib/util/number/utoa32 - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end local.get $4 - local.get $2 + local.get $3 call $~lib/string/String#get:length local.tee $5 i32.const 10 @@ -18566,7 +18568,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18577,25 +18579,25 @@ i32.add i32.load16_u call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $5 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $5 i32.add - local.set $3 + local.set $2 end local.get $6 i32.const 1 @@ -18606,7 +18608,7 @@ end local.get $7 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18617,7 +18619,7 @@ i32.add i32.load16_u call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -18625,13 +18627,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -18642,7 +18644,6 @@ i32.load offset=8 i32.const 1 i32.shr_u - i32.const 3264 call $~lib/util/string/joinIntegerArray i32.const 3264 call $~lib/rt/pure/__release @@ -18690,15 +18691,16 @@ call $~lib/util/number/utoa_dec_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 i32.const 1 i32.sub @@ -18706,7 +18708,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 2928 return @@ -18717,12 +18719,12 @@ local.get $0 i32.load call $~lib/util/number/itoa32 - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end local.get $4 - local.get $2 + local.get $3 call $~lib/string/String#get:length local.tee $5 i32.const 11 @@ -18743,7 +18745,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18754,25 +18756,25 @@ i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $5 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $5 i32.add - local.set $3 + local.set $2 end local.get $6 i32.const 1 @@ -18783,7 +18785,7 @@ end local.get $7 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18794,7 +18796,7 @@ i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -18802,13 +18804,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -18819,7 +18821,6 @@ i32.load offset=8 i32.const 2 i32.shr_u - i32.const 3264 call $~lib/util/string/joinIntegerArray i32.const 3264 call $~lib/rt/pure/__release @@ -18845,15 +18846,16 @@ call $~lib/util/number/utoa_dec_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 i32.const 1 i32.sub @@ -18861,7 +18863,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 2928 return @@ -18872,12 +18874,12 @@ local.get $0 i32.load call $~lib/util/number/utoa32 - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end local.get $4 - local.get $2 + local.get $3 call $~lib/string/String#get:length local.tee $5 i32.const 10 @@ -18898,7 +18900,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18909,25 +18911,25 @@ i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $5 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $5 i32.add - local.set $3 + local.set $2 end local.get $6 i32.const 1 @@ -18938,7 +18940,7 @@ end local.get $7 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -18949,7 +18951,7 @@ i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -18957,13 +18959,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -18974,7 +18976,6 @@ i32.load offset=8 i32.const 2 i32.shr_u - i32.const 3264 call $~lib/util/string/joinIntegerArray i32.const 3264 call $~lib/rt/pure/__release @@ -19116,16 +19117,17 @@ end local.get $3 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i64) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $4 local.get $1 i32.const 1 i32.sub @@ -19133,7 +19135,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $4 call $~lib/rt/pure/__release i32.const 2928 return @@ -19147,28 +19149,28 @@ i64.load i32.wrap_i64 i64.extend_i32_s - local.tee $4 + local.tee $3 i64.eqz br_if $__inlined_func$~lib/util/number/itoa64 drop - local.get $4 + local.get $3 i64.const 63 i64.shr_u i32.wrap_i64 local.tee $0 if i64.const 0 - local.get $4 + local.get $3 i64.sub - local.set $4 + local.set $3 end - local.get $4 + local.get $3 i64.const 4294967295 i64.le_u if - local.get $4 + local.get $3 i32.wrap_i64 - local.tee $3 + local.tee $2 call $~lib/util/number/decimalCount32 local.get $0 i32.add @@ -19178,22 +19180,22 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $1 - local.get $3 + local.get $2 local.get $5 call $~lib/util/number/utoa_dec_simple else - local.get $4 + local.get $3 call $~lib/util/number/decimalCount64High local.get $0 i32.add - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $1 - local.get $4 local.get $3 + local.get $2 call $~lib/util/number/utoa_dec_simple end local.get $0 @@ -19205,12 +19207,12 @@ local.get $1 call $~lib/rt/pure/__retain end - local.get $2 + local.get $4 call $~lib/rt/pure/__release return end local.get $5 - local.get $2 + local.get $4 call $~lib/string/String#get:length local.tee $6 i32.const 21 @@ -19231,7 +19233,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -19242,25 +19244,25 @@ i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $6 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $4 local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $6 i32.add - local.set $3 + local.set $2 end local.get $7 i32.const 1 @@ -19271,7 +19273,7 @@ end local.get $8 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -19282,7 +19284,7 @@ i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -19290,13 +19292,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $4 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $4 call $~lib/rt/pure/__release local.get $1 ) @@ -19307,7 +19309,6 @@ i32.load offset=8 i32.const 3 i32.shr_u - i32.const 3264 call $~lib/util/string/joinIntegerArray i32.const 3264 call $~lib/rt/pure/__release @@ -19350,16 +19351,17 @@ end local.get $2 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 i32.const 1 i32.sub @@ -19367,7 +19369,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 2928 return @@ -19391,14 +19393,14 @@ i32.wrap_i64 local.tee $1 call $~lib/util/number/decimalCount32 - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $0 local.get $1 - local.get $3 + local.get $2 call $~lib/util/number/utoa_dec_simple else local.get $5 @@ -19416,12 +19418,12 @@ local.get $0 call $~lib/rt/pure/__retain end - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end local.get $4 - local.get $2 + local.get $3 call $~lib/string/String#get:length local.tee $6 i32.const 20 @@ -19442,7 +19444,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -19453,25 +19455,25 @@ i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $6 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $6 i32.add - local.set $3 + local.set $2 end local.get $7 i32.const 1 @@ -19482,7 +19484,7 @@ end local.get $8 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -19493,7 +19495,7 @@ i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -19501,13 +19503,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -19518,7 +19520,6 @@ i32.load offset=8 i32.const 3 i32.shr_u - i32.const 3264 call $~lib/util/string/joinIntegerArray i32.const 3264 call $~lib/rt/pure/__release @@ -20574,15 +20575,16 @@ local.get $1 call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 i32.const 1 i32.sub @@ -20590,7 +20592,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 2928 return @@ -20602,12 +20604,12 @@ f32.load f64.promote_f32 call $~lib/util/number/dtoa - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end local.get $4 - local.get $2 + local.get $3 call $~lib/string/String#get:length local.tee $5 i32.const 28 @@ -20628,7 +20630,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -20640,25 +20642,25 @@ f32.load f64.promote_f32 call $~lib/util/number/dtoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $5 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $5 i32.add - local.set $3 + local.set $2 end local.get $6 i32.const 1 @@ -20669,7 +20671,7 @@ end local.get $7 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -20681,7 +20683,7 @@ f32.load f64.promote_f32 call $~lib/util/number/dtoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -20689,13 +20691,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -20706,20 +20708,20 @@ i32.load offset=8 i32.const 2 i32.shr_u - i32.const 3264 call $~lib/util/string/joinFloatArray i32.const 3264 call $~lib/rt/pure/__release ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $2 + i32.const 3264 call $~lib/rt/pure/__retain - local.set $2 + local.set $3 local.get $1 i32.const 1 i32.sub @@ -20727,7 +20729,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $3 call $~lib/rt/pure/__release i32.const 2928 return @@ -20738,12 +20740,12 @@ local.get $0 f64.load call $~lib/util/number/dtoa - local.get $2 + local.get $3 call $~lib/rt/pure/__release return end local.get $4 - local.get $2 + local.get $3 call $~lib/string/String#get:length local.tee $5 i32.const 28 @@ -20764,7 +20766,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -20775,25 +20777,25 @@ i32.add f64.load call $~lib/util/number/dtoa_buffered - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 local.get $5 if local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.get $2 + local.get $3 local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $5 i32.add - local.set $3 + local.set $2 end local.get $6 i32.const 1 @@ -20804,7 +20806,7 @@ end local.get $7 local.get $1 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -20815,7 +20817,7 @@ i32.add f64.load call $~lib/util/number/dtoa_buffered - local.get $3 + local.get $2 i32.add local.tee $0 i32.gt_s @@ -20823,13 +20825,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 ) @@ -20840,7 +20842,6 @@ i32.load offset=8 i32.const 3 i32.shr_u - i32.const 3264 call $~lib/util/string/joinFloatArray i32.const 3264 call $~lib/rt/pure/__release @@ -20867,7 +20868,6 @@ call $~lib/memory/memory.fill local.get $1 call $~lib/rt/pure/__retain - local.tee $0 ) (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -28991,22 +28991,22 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f64) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) + (local $10 f32) + (local $11 f64) + (local $12 f32) (local $13 i32) (local $14 i32) (local $15 i32) (local $16 i32) (local $17 i32) (local $18 i32) - (local $19 f32) - (local $20 f64) - (local $21 f32) + (local $19 i32) + (local $20 i32) + (local $21 i32) (local $22 i32) - (local $23 f64) + (local $23 i32) (local $24 i32) (local $25 i32) (local $26 i32) @@ -29019,19 +29019,19 @@ call $std/typedarray/testInstantiate i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -29045,7 +29045,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 @@ -29055,7 +29055,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 12 i32.ne @@ -29067,7 +29067,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 @@ -29080,7 +29080,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 @@ -29093,7 +29093,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -29106,14 +29106,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#subarray - 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=8 i32.const 2 i32.shr_u @@ -29127,7 +29127,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 4 i32.ne @@ -29139,7 +29139,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 4 i32.ne @@ -29151,7 +29151,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 2 @@ -29164,50 +29164,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 8 call $~lib/typedarray/Float64Array#constructor - local.tee $1 + local.tee $0 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 7 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 3 f64.const 6 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 4 f64.const 5 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 5 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 6 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 7 f64.const 8 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Float64Array#subarray - 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=8 i32.const 3 i32.shr_u @@ -29221,7 +29221,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 16 i32.ne @@ -29233,7 +29233,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 32 i32.ne @@ -29248,68 +29248,68 @@ i32.const 0 global.set $~argumentsLength block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $28 + local.tee $3 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $29 + local.tee $2 i32.const 1 i32.le_s br_if $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $28 + local.get $3 i32.load offset=4 - local.set $1 - local.get $29 + local.set $0 + local.get $2 i32.const 2 i32.eq if - local.get $1 + local.get $0 f64.load offset=8 - local.set $23 - local.get $1 + local.set $8 + local.get $0 f64.load - local.set $20 + local.set $11 i32.const 2 global.set $~argumentsLength - local.get $23 - local.get $20 + local.get $8 + local.get $11 call $~lib/util/sort/COMPARATOR~anonymous|0 i32.const 0 i32.lt_s if - local.get $1 - local.get $20 + local.get $0 + local.get $11 f64.store offset=8 - local.get $1 - local.get $23 + local.get $0 + local.get $8 f64.store end br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $29 + local.get $2 i32.const 256 i32.lt_s if - local.get $1 - local.get $29 + local.get $0 + local.get $2 call $~lib/util/sort/insertionSort else - local.get $1 - local.get $29 + local.get $0 + local.get $2 call $~lib/util/sort/weakHeapSort end end - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.eq if (result i32) - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -29318,7 +29318,7 @@ i32.const 0 end if (result i32) - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 6 @@ -29327,7 +29327,7 @@ i32.const 0 end if (result i32) - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Float64Array#__get f64.const 7 @@ -29344,23 +29344,23 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 + local.tee $0 i32.const 0 i32.const -32 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 256 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get if @@ -29371,7 +29371,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 @@ -29384,7 +29384,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 255 @@ -29397,44 +29397,44 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int8Array#constructor - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 1 i32.const 3 call $~lib/typedarray/Int8Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 14 i32.const 1504 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -29445,20 +29445,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int8Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 14 i32.const 1584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.tee $3 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -29469,20 +29469,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 0 i32.const -3 call $~lib/typedarray/Int8Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 14 i32.const 1616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $27 + local.tee $4 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -29493,20 +29493,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 i32.const -2 i32.const 2147483647 call $~lib/typedarray/Int8Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 14 i32.const 1648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $26 + local.tee $5 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -29517,20 +29517,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 1 i32.const 0 call $~lib/typedarray/Int8Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 14 i32.const 1680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $25 + local.tee $6 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -29541,17 +29541,17 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#subarray - local.tee $0 + local.tee $1 i32.const 0 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int8Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.load offset=8 i32.const 3 i32.ne @@ -29563,7 +29563,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 1 i32.ne @@ -29575,7 +29575,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 3 i32.ne @@ -29587,14 +29587,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 i32.const 14 i32.const 1712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $24 + local.tee $7 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -29605,14 +29605,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 14 i32.const 1744 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 + local.tee $9 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -29623,60 +29623,60 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $27 + local.get $4 call $~lib/rt/pure/__release - local.get $26 + local.get $5 call $~lib/rt/pure/__release - local.get $25 + local.get $6 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.get $24 + local.get $7 call $~lib/rt/pure/__release - local.get $22 + local.get $9 call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int32Array#constructor - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 2 i32.const 15 i32.const 1776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -29687,20 +29687,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 2 i32.const 15 i32.const 1824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.tee $3 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -29711,20 +29711,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 0 i32.const -3 call $~lib/typedarray/Int32Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 2 i32.const 15 i32.const 1872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $27 + local.tee $4 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -29735,20 +29735,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 i32.const -2 i32.const 2147483647 call $~lib/typedarray/Int32Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 2 i32.const 15 i32.const 1920 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $26 + local.tee $5 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -29759,20 +29759,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 1 i32.const 0 call $~lib/typedarray/Int32Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 2 i32.const 15 i32.const 1968 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $25 + local.tee $6 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -29783,17 +29783,17 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#subarray - local.tee $0 + local.tee $1 i32.const 0 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#fill call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -29807,7 +29807,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 4 i32.ne @@ -29819,7 +29819,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 12 i32.ne @@ -29831,14 +29831,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 2 i32.const 15 i32.const 2016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $24 + local.tee $7 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -29849,14 +29849,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 5 i32.const 2 i32.const 15 i32.const 2048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 + local.tee $9 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -29867,55 +29867,55 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $27 + local.get $4 call $~lib/rt/pure/__release - local.get $26 + local.get $5 call $~lib/rt/pure/__release - local.get $25 + local.get $6 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.get $24 + local.get $7 call $~lib/rt/pure/__release - local.get $22 + local.get $9 call $~lib/rt/pure/__release i32.const 6 call $~lib/typedarray/Int8Array#constructor - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 5 i32.const 6 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 6 call $~lib/typedarray/Int8Array#subarray - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 2 @@ -29928,7 +29928,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 5 i32.ne @@ -29940,7 +29940,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 1 i32.ne @@ -29952,7 +29952,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 5 i32.ne @@ -29964,11 +29964,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 5 call $~lib/typedarray/Int8Array#subarray - local.tee $29 + local.tee $2 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 3 @@ -29981,7 +29981,7 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.load offset=8 i32.const 4 i32.ne @@ -29993,7 +29993,7 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 2 i32.ne @@ -30005,7 +30005,7 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.load offset=8 i32.const 4 i32.ne @@ -30017,11 +30017,11 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#subarray - local.tee $28 + local.tee $3 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 4 @@ -30034,7 +30034,7 @@ call $~lib/builtins/abort unreachable end - local.get $28 + local.get $3 i32.load offset=8 i32.const 3 i32.ne @@ -30046,7 +30046,7 @@ call $~lib/builtins/abort unreachable end - local.get $28 + local.get $3 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 3 i32.ne @@ -30058,7 +30058,7 @@ call $~lib/builtins/abort unreachable end - local.get $28 + local.get $3 i32.load offset=8 i32.const 3 i32.ne @@ -30070,54 +30070,54 @@ call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $29 + local.get $1 call $~lib/rt/pure/__release - local.get $28 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int32Array#constructor - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.set $29 - local.get $1 + local.set $2 + local.get $0 i32.const 0 i32.const 3 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.tee $28 + local.tee $3 i32.const 5 i32.const 2 i32.const 15 i32.const 2096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $27 + local.tee $4 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30128,26 +30128,26 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - 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 1 i32.const 3 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.tee $26 + local.tee $5 i32.const 5 i32.const 2 i32.const 15 i32.const 2144 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $25 + local.tee $6 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30158,25 +30158,25 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 1 i32.const 2 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.tee $24 + local.tee $7 i32.const 5 i32.const 2 i32.const 15 i32.const 2192 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 + local.tee $9 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30187,25 +30187,25 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 2 i32.const 2 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.tee $18 + local.tee $13 i32.const 5 i32.const 2 i32.const 15 i32.const 2240 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $17 + local.tee $14 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30216,25 +30216,25 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 0 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#copyWithin - local.tee $16 + local.tee $15 i32.const 5 i32.const 2 i32.const 15 i32.const 2288 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $15 + local.tee $16 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30245,25 +30245,25 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 1 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#copyWithin - local.tee $14 + local.tee $17 i32.const 5 i32.const 2 i32.const 15 i32.const 2336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $13 + local.tee $18 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30274,25 +30274,25 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 1 i32.const 2 i32.const 4 call $~lib/typedarray/Int32Array#copyWithin - local.tee $12 + local.tee $19 i32.const 5 i32.const 2 i32.const 15 i32.const 2384 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $11 + local.tee $20 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30303,25 +30303,25 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 0 i32.const -2 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.tee $10 + local.tee $21 i32.const 5 i32.const 2 i32.const 15 i32.const 2432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $9 + local.tee $22 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30332,25 +30332,25 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const 0 i32.const -2 i32.const -1 call $~lib/typedarray/Int32Array#copyWithin - local.tee $8 + local.tee $23 i32.const 5 i32.const 2 i32.const 15 i32.const 2480 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.tee $24 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30361,25 +30361,25 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.tee $0 + local.tee $1 i32.const -4 i32.const -3 i32.const -2 call $~lib/typedarray/Int32Array#copyWithin - local.tee $6 + local.tee $25 i32.const 5 i32.const 2 i32.const 15 i32.const 2528 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.tee $26 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30390,26 +30390,26 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.set $1 - local.get $0 - call $~lib/rt/pure/__release + local.set $0 local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.const -4 i32.const -3 i32.const -1 call $~lib/typedarray/Int32Array#copyWithin - local.tee $4 + local.tee $27 i32.const 5 i32.const 2 i32.const 15 i32.const 2576 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 + local.tee $28 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30420,26 +30420,26 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - 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 -4 i32.const -3 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.tee $1 + local.tee $0 i32.const 5 i32.const 2 i32.const 15 i32.const 2624 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $29 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -30450,85 +30450,85 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $29 + local.get $1 call $~lib/rt/pure/__release - local.get $28 + local.get $2 call $~lib/rt/pure/__release - local.get $27 + local.get $3 call $~lib/rt/pure/__release - local.get $26 + local.get $4 call $~lib/rt/pure/__release - local.get $25 + local.get $5 call $~lib/rt/pure/__release - local.get $24 + local.get $6 call $~lib/rt/pure/__release - local.get $22 + local.get $7 call $~lib/rt/pure/__release - local.get $18 + local.get $9 call $~lib/rt/pure/__release - local.get $17 + local.get $13 call $~lib/rt/pure/__release - local.get $16 + local.get $14 call $~lib/rt/pure/__release local.get $15 call $~lib/rt/pure/__release - local.get $14 + local.get $16 call $~lib/rt/pure/__release - local.get $13 + local.get $17 call $~lib/rt/pure/__release - local.get $12 + local.get $18 call $~lib/rt/pure/__release - local.get $11 + local.get $19 call $~lib/rt/pure/__release - local.get $10 + local.get $20 call $~lib/rt/pure/__release - local.get $9 + local.get $21 call $~lib/rt/pure/__release - local.get $8 + local.get $22 call $~lib/rt/pure/__release - local.get $7 + local.get $23 call $~lib/rt/pure/__release - local.get $6 + local.get $24 call $~lib/rt/pure/__release - local.get $5 + local.get $25 call $~lib/rt/pure/__release - local.get $4 + local.get $26 call $~lib/rt/pure/__release - local.get $3 + local.get $27 call $~lib/rt/pure/__release - local.get $1 + local.get $28 call $~lib/rt/pure/__release - local.get $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int32Array#constructor - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#subarray - local.tee $29 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -30542,7 +30542,7 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 4 i32.ne @@ -30554,7 +30554,7 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.load offset=8 i32.const 12 i32.ne @@ -30566,11 +30566,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#slice - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 2 @@ -30583,7 +30583,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -30596,7 +30596,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -30610,7 +30610,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 @@ -30620,7 +30620,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 8 i32.ne @@ -30632,11 +30632,11 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#slice - local.tee $28 + local.tee $3 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -30649,7 +30649,7 @@ call $~lib/builtins/abort unreachable end - local.get $28 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -30663,7 +30663,7 @@ call $~lib/builtins/abort unreachable end - local.get $28 + local.get $3 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 @@ -30673,7 +30673,7 @@ call $~lib/builtins/abort unreachable end - local.get $28 + local.get $3 i32.load offset=8 i32.const 4 i32.ne @@ -30685,12 +30685,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $27 + local.tee $4 i32.eq if i32.const 0 @@ -30700,11 +30700,11 @@ call $~lib/builtins/abort unreachable end - local.get $27 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -30717,9 +30717,9 @@ call $~lib/builtins/abort unreachable end - local.get $27 + local.get $4 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 + local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.ne if @@ -30730,9 +30730,9 @@ call $~lib/builtins/abort unreachable end - local.get $27 + local.get $4 i32.load offset=8 - local.get $1 + local.get $0 i32.load offset=8 i32.ne if @@ -30743,68 +30743,68 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $27 + local.get $4 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $27 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $29 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $29 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set i32.const 0 - local.set $1 - i32.const 0 local.set $0 - local.get $29 + i32.const 0 + local.set $1 + local.get $2 call $~lib/rt/pure/__retain - local.tee $28 + local.tee $3 i32.load offset=4 - local.set $26 - local.get $28 + local.set $5 + local.get $3 i32.load offset=8 - local.set $25 + local.set $6 loop $for-loop|0 - local.get $1 - local.get $25 + local.get $0 + local.get $6 i32.lt_s if - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.add i32.load8_s - local.set $24 + local.set $7 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $24 - i32.add - local.set $0 local.get $1 - i32.const 1 + local.get $7 i32.add local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|0 end end - local.get $28 + local.get $3 call $~lib/rt/pure/__release block $folding-inner18 block $folding-inner0 @@ -30822,33 +30822,33 @@ block $folding-inner4 block $folding-inner3 block $folding-inner2 - local.get $0 + local.get $1 i32.const 255 i32.and i32.const 6 i32.ne br_if $folding-inner2 - local.get $27 + local.get $4 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#reduce i32.const 255 @@ -30856,27 +30856,27 @@ i32.const 6 i32.ne br_if $folding-inner2 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 4 call $~lib/typedarray/Uint8Array#reduce i32.const 255 @@ -30884,456 +30884,456 @@ i32.const 6 i32.ne br_if $folding-inner2 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $27 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $29 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $29 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set i32.const 0 - local.set $1 - i32.const 0 local.set $0 - local.get $29 + i32.const 0 + local.set $1 + local.get $2 call $~lib/rt/pure/__retain - local.tee $28 + local.tee $3 i32.load offset=4 - local.set $26 - local.get $28 + local.set $5 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.set $25 + local.set $6 loop $for-loop|00 - local.get $1 - local.get $25 + local.get $0 + local.get $6 i32.lt_s if - local.get $26 - local.get $1 + local.get $5 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_s - local.set $24 + local.set $7 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $24 - i32.add - local.set $0 local.get $1 - i32.const 1 + local.get $7 i32.add local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|00 end end - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 6 i32.ne br_if $folding-inner2 - local.get $27 + local.get $4 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $27 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $29 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $29 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set i32.const 0 - local.set $1 - i32.const 0 local.set $0 - local.get $29 + i32.const 0 + local.set $1 + local.get $2 call $~lib/rt/pure/__retain - local.tee $28 + local.tee $3 i32.load offset=4 - local.set $26 - local.get $28 + local.set $5 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.set $25 + local.set $6 loop $for-loop|01 - local.get $1 - local.get $25 + local.get $0 + local.get $6 i32.lt_s if - local.get $26 - local.get $1 + local.get $5 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_u - local.set $24 + local.set $7 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $24 - i32.add - local.set $0 local.get $1 - i32.const 1 + local.get $7 i32.add local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|01 end end - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 6 i32.ne br_if $folding-inner2 - local.get $27 + local.get $4 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 7 call $~lib/typedarray/Int32Array#reduce i32.const 6 i32.ne br_if $folding-inner2 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 8 call $~lib/typedarray/Int32Array#reduce i32.const 6 i32.ne br_if $folding-inner2 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 9 call $~lib/typedarray/Int64Array#reduce i64.const 6 i64.ne br_if $folding-inner2 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 10 call $~lib/typedarray/Int64Array#reduce i64.const 6 i64.ne br_if $folding-inner2 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $28 + local.tee $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.load offset=4 - local.set $27 - local.get $29 + local.set $4 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $26 + local.set $5 loop $for-loop|02 - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.lt_s if - local.get $27 - local.get $1 + local.get $4 + local.get $0 i32.const 2 i32.shl i32.add f32.load - local.set $19 + local.set $12 i32.const 4 global.set $~argumentsLength - local.get $21 - local.get $19 + local.get $10 + local.get $12 f32.add - local.set $21 - local.get $1 + local.set $10 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|02 end end - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $21 + local.get $10 f32.const 6 f32.ne br_if $folding-inner2 - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $28 + local.tee $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set i32.const 0 - local.set $1 + local.set $0 f64.const 0 - local.set $23 - local.get $0 + local.set $8 + local.get $1 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.load offset=4 - local.set $27 - local.get $29 + local.set $4 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.set $26 + local.set $5 loop $for-loop|03 - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.lt_s if - local.get $27 - local.get $1 + local.get $4 + local.get $0 i32.const 3 i32.shl i32.add f64.load - local.set $20 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $23 - local.get $20 + local.get $8 + local.get $11 f64.add - local.set $23 - local.get $1 + local.set $8 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|03 end end - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $23 + local.get $8 f64.const 6 f64.ne br_if $folding-inner2 - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $27 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $29 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $29 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set i32.const 0 - local.set $0 - local.get $29 + local.set $1 + local.get $2 call $~lib/rt/pure/__retain - local.tee $28 + local.tee $3 i32.load offset=4 - local.set $26 - local.get $28 + local.set $5 + local.get $3 i32.load offset=8 i32.const 1 i32.sub - local.set $1 + local.set $0 loop $for-loop|04 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.add i32.load8_s - local.set $25 + local.set $6 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $25 - i32.add - local.set $0 local.get $1 + local.get $6 + i32.add + local.set $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $for-loop|04 end end - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.const 255 i32.and i32.const 6 i32.ne br_if $folding-inner3 - local.get $27 + local.get $4 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 14 call $~lib/typedarray/Uint8Array#reduceRight i32.const 255 @@ -31341,27 +31341,27 @@ i32.const 6 i32.ne br_if $folding-inner3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 15 call $~lib/typedarray/Uint8Array#reduceRight i32.const 255 @@ -31369,1012 +31369,1012 @@ i32.const 6 i32.ne br_if $folding-inner3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $27 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $29 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $29 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set i32.const 0 - local.set $0 - local.get $29 + local.set $1 + local.get $2 call $~lib/rt/pure/__retain - local.tee $28 + local.tee $3 i32.load offset=4 - local.set $26 - local.get $28 + local.set $5 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 loop $for-loop|05 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $26 - local.get $1 + local.get $5 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_s - local.set $25 + local.set $6 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $25 - i32.add - local.set $0 local.get $1 + local.get $6 + i32.add + local.set $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $for-loop|05 end end - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 6 i32.ne br_if $folding-inner3 - local.get $27 + local.get $4 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $27 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $29 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $29 + local.get $2 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set i32.const 0 - local.set $0 - local.get $29 + local.set $1 + local.get $2 call $~lib/rt/pure/__retain - local.tee $28 + local.tee $3 i32.load offset=4 - local.set $26 - local.get $28 + local.set $5 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 loop $for-loop|06 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $26 - local.get $1 + local.get $5 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_u - local.set $25 + local.set $6 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $25 - i32.add - local.set $0 local.get $1 + local.get $6 + i32.add + local.set $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $for-loop|06 end end - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 6 i32.ne br_if $folding-inner3 - local.get $27 + local.get $4 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set block $folding-inner1 - local.get $1 + local.get $0 i32.const 18 call $~lib/typedarray/Int32Array#reduceRight i32.const 6 i32.ne br_if $folding-inner1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 19 call $~lib/typedarray/Int32Array#reduceRight i32.const 6 i32.ne br_if $folding-inner1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 20 call $~lib/typedarray/Int64Array#reduceRight i64.const 6 i64.ne br_if $folding-inner1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 21 call $~lib/typedarray/Int64Array#reduceRight i64.const 6 i64.ne br_if $folding-inner1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $28 + local.tee $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set f32.const 0 - local.set $21 - local.get $0 + local.set $10 + local.get $1 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.load offset=4 - local.set $27 - local.get $29 + local.set $4 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 loop $for-loop|07 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $27 - local.get $1 + local.get $4 + local.get $0 i32.const 2 i32.shl i32.add f32.load - local.set $19 + local.set $12 i32.const 4 global.set $~argumentsLength - local.get $21 - local.get $19 + local.get $10 + local.get $12 f32.add - local.set $21 - local.get $1 + local.set $10 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $for-loop|07 end end - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $21 + local.get $10 f32.const 6 f32.ne br_if $folding-inner1 - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $28 + local.tee $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set f64.const 0 - local.set $23 - local.get $0 + local.set $8 + local.get $1 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.load offset=4 - local.set $27 - local.get $29 + local.set $4 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 loop $for-loop|08 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $27 - local.get $1 + local.get $4 + local.get $0 i32.const 3 i32.shl i32.add f64.load - local.set $20 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $23 - local.get $20 + local.get $8 + local.get $11 f64.add - local.set $23 - local.get $1 + local.set $8 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $for-loop|08 end end - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $23 + local.get $8 f64.const 6 f64.ne br_if $folding-inner1 - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $24 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $26 + local.tee $5 i32.load offset=8 - local.set $28 - local.get $26 + local.set $3 + local.get $5 i32.load offset=4 - local.set $22 + local.set $9 i32.const 12 i32.const 3 call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $28 + local.set $2 + local.get $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $27 + local.set $4 loop $for-loop|09 - local.get $1 - local.get $28 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.get $22 + local.get $0 + local.get $9 i32.add i32.load8_s - local.set $25 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $27 + local.get $0 + local.get $4 i32.add - local.get $25 - local.get $25 + local.get $6 + local.get $6 i32.mul i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|09 end end - local.get $29 - local.get $27 + local.get $2 + local.get $4 call $~lib/rt/pure/__retain i32.store - local.get $29 - local.get $27 + local.get $2 + local.get $4 i32.store offset=4 - local.get $29 - local.get $28 + local.get $2 + local.get $3 i32.store offset=8 - local.get $29 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $26 + local.set $0 + local.get $5 call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne br_if $folding-inner4 - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 i32.ne br_if $folding-inner5 - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 9 i32.ne br_if $folding-inner6 - local.get $24 - call $~lib/rt/pure/__release - local.get $0 + local.get $7 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $24 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $26 + local.tee $5 i32.load offset=8 - local.set $28 - local.get $26 + local.set $3 + local.get $5 i32.load offset=4 - local.set $22 + local.set $9 i32.const 12 i32.const 4 call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $28 + local.set $2 + local.get $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $27 + local.set $4 loop $for-loop|010 - local.get $1 - local.get $28 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.get $22 + local.get $0 + local.get $9 i32.add i32.load8_u - local.set $25 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $27 + local.get $0 + local.get $4 i32.add - local.get $25 - local.get $25 + local.get $6 + local.get $6 i32.mul i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|010 end end - local.get $29 - local.get $27 + local.get $2 + local.get $4 call $~lib/rt/pure/__retain i32.store - local.get $29 - local.get $27 + local.get $2 + local.get $4 i32.store offset=4 - local.get $29 - local.get $28 + local.get $2 + local.get $3 i32.store offset=8 - local.get $29 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $26 + local.set $0 + local.get $5 call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne br_if $folding-inner4 - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 i32.ne br_if $folding-inner5 - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 9 i32.ne br_if $folding-inner6 - local.get $24 - call $~lib/rt/pure/__release - local.get $0 + local.get $7 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $24 + local.tee $7 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $26 + local.tee $5 i32.load offset=8 - local.set $28 - local.get $26 + local.set $3 + local.get $5 i32.load offset=4 - local.set $22 + local.set $9 i32.const 12 i32.const 5 call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $28 + local.set $2 + local.get $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $27 + local.set $4 loop $for-loop|011 - local.get $1 - local.get $28 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.get $22 + local.get $0 + local.get $9 i32.add i32.load8_u - local.set $25 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $27 + local.get $0 + local.get $4 i32.add - local.get $25 - local.get $25 + local.get $6 + local.get $6 i32.mul i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|011 end end - local.get $29 - local.get $27 + local.get $2 + local.get $4 call $~lib/rt/pure/__retain i32.store - local.get $29 - local.get $27 + local.get $2 + local.get $4 i32.store offset=4 - local.get $29 - local.get $28 + local.get $2 + local.get $3 i32.store offset=8 - local.get $29 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $26 + local.set $0 + local.get $5 call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne br_if $folding-inner4 - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 i32.ne br_if $folding-inner5 - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 9 i32.ne br_if $folding-inner6 - local.get $24 - call $~lib/rt/pure/__release - local.get $0 + local.get $7 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $29 + local.tee $2 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Int16Array#map - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne br_if $folding-inner4 - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 i32.ne br_if $folding-inner5 - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 9 i32.ne br_if $folding-inner6 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $29 + local.tee $2 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Uint16Array#map - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne br_if $folding-inner4 - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 i32.ne br_if $folding-inner5 - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 9 i32.ne br_if $folding-inner6 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $29 + local.tee $2 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Int32Array#map - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne br_if $folding-inner4 - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 i32.ne br_if $folding-inner5 - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 9 i32.ne br_if $folding-inner6 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $29 + local.tee $2 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Uint32Array#map - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne br_if $folding-inner4 - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 i32.ne br_if $folding-inner5 - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 9 i32.ne br_if $folding-inner6 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $29 + local.tee $2 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Int64Array#map - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne br_if $folding-inner4 - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 i64.ne br_if $folding-inner5 - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 9 i64.ne br_if $folding-inner6 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $29 + local.tee $2 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Uint64Array#map - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne br_if $folding-inner4 - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 i64.ne br_if $folding-inner5 - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 9 i64.ne br_if $folding-inner6 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $29 + local.tee $2 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Float32Array#map - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne br_if $folding-inner4 - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 f32.ne br_if $folding-inner5 - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 9 f32.ne br_if $folding-inner6 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $29 + local.tee $2 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $0 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Float64Array#map - local.tee $0 + local.tee $1 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne br_if $folding-inner4 - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.ne br_if $folding-inner5 - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 9 f64.ne br_if $folding-inner6 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> @@ -32388,1003 +32388,1003 @@ call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 46 call $~lib/typedarray/Int8Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 47 call $~lib/typedarray/Int8Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 48 call $~lib/typedarray/Uint8Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 49 call $~lib/typedarray/Uint8Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 50 call $~lib/typedarray/Uint8Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 51 call $~lib/typedarray/Uint8Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 52 call $~lib/typedarray/Int16Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 53 call $~lib/typedarray/Int16Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 54 call $~lib/typedarray/Uint16Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 55 call $~lib/typedarray/Uint16Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 56 call $~lib/typedarray/Int32Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 57 call $~lib/typedarray/Int32Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 58 call $~lib/typedarray/Int32Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 59 call $~lib/typedarray/Int32Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 6 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 60 call $~lib/typedarray/Int64Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 61 call $~lib/typedarray/Int64Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 6 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 62 call $~lib/typedarray/Int64Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 63 call $~lib/typedarray/Int64Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 6 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 64 call $~lib/typedarray/Float32Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 65 call $~lib/typedarray/Float32Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 6 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 66 call $~lib/typedarray/Float64Array#some i32.eqz br_if $folding-inner7 - local.get $1 + local.get $0 i32.const 67 call $~lib/typedarray/Float64Array#some br_if $folding-inner8 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 68 call $~lib/typedarray/Int8Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 69 call $~lib/typedarray/Int8Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 70 call $~lib/typedarray/Uint8Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 71 call $~lib/typedarray/Uint8Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 72 call $~lib/typedarray/Uint8Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 73 call $~lib/typedarray/Uint8Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 74 call $~lib/typedarray/Int16Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 75 call $~lib/typedarray/Int16Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 76 call $~lib/typedarray/Uint16Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 77 call $~lib/typedarray/Uint16Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 78 call $~lib/typedarray/Int32Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 79 call $~lib/typedarray/Int32Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 80 call $~lib/typedarray/Int32Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 81 call $~lib/typedarray/Int32Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 82 call $~lib/typedarray/Int64Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 83 call $~lib/typedarray/Int64Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 84 call $~lib/typedarray/Int64Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 85 call $~lib/typedarray/Int64Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 86 call $~lib/typedarray/Float32Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 87 call $~lib/typedarray/Float32Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 88 call $~lib/typedarray/Float64Array#findIndex i32.const 1 i32.ne br_if $folding-inner9 - local.get $1 + local.get $0 i32.const 89 call $~lib/typedarray/Float64Array#findIndex i32.const -1 i32.ne br_if $folding-inner10 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 90 call $~lib/typedarray/Int8Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 91 call $~lib/typedarray/Int8Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 92 call $~lib/typedarray/Uint8Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 93 call $~lib/typedarray/Uint8Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 94 call $~lib/typedarray/Uint8Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 95 call $~lib/typedarray/Uint8Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 96 call $~lib/typedarray/Int16Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 97 call $~lib/typedarray/Int16Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 98 call $~lib/typedarray/Uint16Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 99 call $~lib/typedarray/Uint16Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 100 call $~lib/typedarray/Int32Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 101 call $~lib/typedarray/Int32Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 102 call $~lib/typedarray/Int32Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 103 call $~lib/typedarray/Int32Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 6 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 104 call $~lib/typedarray/Int64Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 105 call $~lib/typedarray/Int64Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 6 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 106 call $~lib/typedarray/Int64Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 107 call $~lib/typedarray/Int64Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 6 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 108 call $~lib/typedarray/Float32Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 109 call $~lib/typedarray/Float32Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 6 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 110 call $~lib/typedarray/Float64Array#every i32.eqz br_if $folding-inner11 - local.get $1 + local.get $0 i32.const 111 call $~lib/typedarray/Float64Array#every br_if $folding-inner12 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $28 + local.tee $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 i32.const 2704 i32.const 0 @@ -33394,7 +33394,7 @@ i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2704 i32.const 1 @@ -33404,7 +33404,7 @@ i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 2704 i32.const 2 @@ -33415,55 +33415,55 @@ i32.shr_s call $~lib/typedarray/Int8Array#__set i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.load offset=4 - local.set $27 - local.get $29 + local.set $4 + local.get $2 i32.load offset=8 - local.set $26 + local.set $5 loop $for-loop|012 - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.lt_s if - local.get $1 - local.get $27 + local.get $0 + local.get $4 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $29 + local.get $0 + local.get $2 call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|012 end end - local.get $29 + local.get $2 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 i32.const 2704 i32.const 0 @@ -33471,7 +33471,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2704 i32.const 1 @@ -33479,7 +33479,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 2704 i32.const 2 @@ -33487,26 +33487,26 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 113 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 i32.const 2704 i32.const 0 @@ -33514,7 +33514,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2704 i32.const 1 @@ -33522,7 +33522,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 2704 i32.const 2 @@ -33530,26 +33530,26 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 114 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $28 + local.tee $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 i32.const 2704 i32.const 0 @@ -33559,7 +33559,7 @@ i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2704 i32.const 1 @@ -33569,7 +33569,7 @@ i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 2704 i32.const 2 @@ -33580,59 +33580,59 @@ i32.shr_s call $~lib/typedarray/Int16Array#__set i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.load offset=4 - local.set $27 - local.get $29 + local.set $4 + local.get $2 i32.load offset=8 i32.const 1 i32.shr_u - local.set $26 + local.set $5 loop $for-loop|013 - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.lt_s if - local.get $27 - local.get $1 + local.get $4 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $29 + local.get $0 + local.get $2 call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|013 end end - local.get $29 + local.get $2 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $28 + local.tee $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 i32.const 2704 i32.const 0 @@ -33640,7 +33640,7 @@ i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2704 i32.const 1 @@ -33648,7 +33648,7 @@ i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 2704 i32.const 2 @@ -33657,227 +33657,227 @@ i32.and call $~lib/typedarray/Uint16Array#__set i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.load offset=4 - local.set $27 - local.get $29 + local.set $4 + local.get $2 i32.load offset=8 i32.const 1 i32.shr_u - local.set $26 + local.set $5 loop $for-loop|014 - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.lt_s if - local.get $27 - local.get $1 + local.get $4 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $29 + local.get $0 + local.get $2 call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|014 end end - local.get $29 + local.get $2 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 i32.const 2704 i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2704 i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 2704 i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 117 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 i32.const 2704 i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2704 i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 2704 i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 118 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 i32.const 2704 i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2704 i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 2704 i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 119 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 i32.const 2704 i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2704 i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 2704 i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 120 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $28 + local.tee $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 i32.const 2704 i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2704 i32.const 1 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 2704 i32.const 2 @@ -33885,73 +33885,73 @@ f32.convert_i32_s call $~lib/typedarray/Float32Array#__set i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.load offset=4 - local.set $27 - local.get $29 + local.set $4 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $26 + local.set $5 loop $for-loop|015 - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.lt_s if - local.get $27 - local.get $1 + local.get $4 + local.get $0 i32.const 2 i32.shl i32.add f32.load i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $29 + local.get $0 + local.get $2 call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|015 end end - local.get $29 + local.get $2 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $28 + local.tee $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 i32.const 2704 i32.const 0 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2704 i32.const 1 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 2704 i32.const 2 @@ -33959,49 +33959,49 @@ f64.convert_i32_s call $~lib/typedarray/Float64Array#__set i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $1 call $~lib/rt/pure/__retain - local.tee $29 + local.tee $2 i32.load offset=4 - local.set $27 - local.get $29 + local.set $4 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.set $26 + local.set $5 loop $for-loop|016 - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.lt_s if - local.get $27 - local.get $1 + local.get $4 + local.get $0 i32.const 3 i32.shl i32.add f64.load i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $29 + local.get $0 + local.get $2 call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|016 end end - local.get $29 + local.get $2 call $~lib/rt/pure/__release global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne br_if $folding-inner13 - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> @@ -34027,11 +34027,11 @@ call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> i32.const 1 call $~lib/typedarray/Float64Array#constructor - local.tee $29 + local.tee $2 i32.const 0 f64.const nan:0x8000000000000 call $~lib/typedarray/Float64Array#__set - local.get $29 + local.get $2 f64.const nan:0x8000000000000 i32.const 0 call $~lib/typedarray/Float64Array#indexOf @@ -34046,71 +34046,71 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 i32.const 0 - local.set $28 + local.set $3 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $29 + local.get $2 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $27 + local.tee $4 if (result i32) i32.const 0 - local.get $27 + local.get $4 i32.ge_s else i32.const 1 end if - local.get $0 + local.get $1 call $~lib/rt/pure/__release br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $0 + local.get $1 i32.load offset=4 - local.set $25 + local.set $6 loop $while-continue|0 - local.get $1 - local.get $27 + local.get $0 + local.get $4 i32.lt_s if - local.get $25 - local.get $1 + local.get $6 + local.get $0 i32.const 3 i32.shl i32.add f64.load - local.tee $23 + local.tee $8 f64.const nan:0x8000000000000 f64.eq if (result i32) i32.const 1 else - local.get $23 - local.get $23 + local.get $8 + local.get $8 f64.ne end if - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 1 - local.set $28 + local.set $3 br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 call $~lib/rt/pure/__release end - local.get $28 + local.get $3 i32.const 0 i32.ne i32.const 1 @@ -34125,11 +34125,11 @@ end i32.const 1 call $~lib/typedarray/Float32Array#constructor - local.tee $28 + local.tee $3 i32.const 0 f32.const nan:0x400000 call $~lib/typedarray/Float32Array#__set - local.get $28 + local.get $3 f32.const nan:0x400000 i32.const 0 call $~lib/typedarray/Float32Array#indexOf @@ -34144,71 +34144,71 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 i32.const 0 - local.set $27 + local.set $4 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $28 + local.get $3 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $26 + local.tee $5 if (result i32) i32.const 0 - local.get $26 + local.get $5 i32.ge_s else i32.const 1 end if - local.get $0 + local.get $1 call $~lib/rt/pure/__release br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 end - local.get $0 + local.get $1 i32.load offset=4 - local.set $24 + local.set $7 loop $while-continue|017 - local.get $1 - local.get $26 + local.get $0 + local.get $5 i32.lt_s if - local.get $24 - local.get $1 + local.get $7 + local.get $0 i32.const 2 i32.shl i32.add f32.load - local.tee $21 + local.tee $10 f32.const nan:0x400000 f32.eq if (result i32) i32.const 1 else - local.get $21 - local.get $21 + local.get $10 + local.get $10 f32.ne end if - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 1 - local.set $27 + local.set $4 br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end - local.get $0 + local.get $1 call $~lib/rt/pure/__release end - local.get $27 + local.get $4 i32.const 0 i32.ne i32.const 1 @@ -34221,525 +34221,525 @@ call $~lib/builtins/abort unreachable end - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $28 + local.get $3 call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Int8Array#join - local.tee $29 + local.tee $2 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/typedarray/Int8Array#join - local.tee $28 + local.tee $3 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 - local.get $29 - call $~lib/rt/pure/__release - local.get $28 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Uint8Array#join - local.tee $29 + local.tee $2 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/typedarray/Uint8Array#join - local.tee $28 - local.get $28 + local.tee $3 + local.get $3 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 - local.get $29 + local.get $2 call $~lib/rt/pure/__release call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 call $~lib/typedarray/Uint8Array#join - local.tee $29 + local.tee $2 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/typedarray/Uint8Array#join - local.tee $28 - local.get $28 + local.tee $3 + local.get $3 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 - local.get $29 - call $~lib/rt/pure/__release + local.get $2 call $~lib/rt/pure/__release - local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Int16Array#join - local.tee $29 + local.tee $2 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/typedarray/Int16Array#join - local.tee $28 + local.tee $3 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Uint16Array#join - local.tee $29 + local.tee $2 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/typedarray/Uint16Array#join - local.tee $28 + local.tee $3 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 - local.get $29 - call $~lib/rt/pure/__release - local.get $28 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Int32Array#join - local.tee $29 + local.tee $2 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/typedarray/Int32Array#join - local.tee $28 + local.tee $3 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Uint32Array#join - local.tee $29 + local.tee $2 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/typedarray/Uint32Array#join - local.tee $28 + local.tee $3 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 3 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 4 i64.const 5 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Int64Array#join - local.tee $29 + local.tee $2 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/typedarray/Int64Array#join - local.tee $28 + local.tee $3 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 3 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 4 i64.const 5 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Uint64Array#join - local.tee $29 + local.tee $2 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/typedarray/Uint64Array#join - local.tee $28 + local.tee $3 i32.const 3296 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 - local.get $29 - call $~lib/rt/pure/__release - local.get $28 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 3 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 4 f32.const 5 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Float32Array#join - local.tee $29 + local.tee $2 i32.const 4400 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 - local.get $1 + local.get $0 call $~lib/typedarray/Float32Array#join - local.tee $28 + local.tee $3 i32.const 4400 call $~lib/string/String.__eq i32.eqz br_if $folding-inner17 - local.get $29 - call $~lib/rt/pure/__release - local.get $28 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 3 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 4 f64.const 5 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 call $~lib/typedarray/Float64Array#join - local.tee $29 + local.tee $2 i32.const 4400 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 - local.get $1 + local.get $0 call $~lib/typedarray/Float64Array#join - local.tee $28 + local.tee $3 i32.const 4400 call $~lib/string/String.__eq i32.eqz br_if $folding-inner17 - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 + local.set $0 i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $29 + local.tee $2 i32.load offset=8 if i32.const 0 @@ -34751,18 +34751,18 @@ end i32.const 2 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - local.get $1 + local.set $1 + local.get $0 call $~lib/rt/pure/__release i32.const 2 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $1 - local.get $29 + local.set $0 + local.get $2 call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.load offset=8 if i32.const 0 @@ -34772,10 +34772,10 @@ call $~lib/builtins/abort unreachable end - 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/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> @@ -34800,135 +34800,135 @@ call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> i32.const 10 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $1 + local.set $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $27 + local.tee $4 i32.const 0 f32.const 400 call $~lib/typedarray/Float32Array#__set - local.get $27 + local.get $4 i32.const 1 f32.const nan:0x400000 call $~lib/typedarray/Float32Array#__set - local.get $27 + local.get $4 i32.const 2 f32.const inf call $~lib/typedarray/Float32Array#__set i32.const 4 call $~lib/typedarray/Int64Array#constructor - local.tee $0 + local.tee $1 i32.const 0 i64.const -10 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 100 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 10 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 3 i64.const 300 call $~lib/typedarray/Int64Array#__set i32.const 2 call $~lib/typedarray/Int32Array#constructor - local.tee $26 + local.tee $5 i32.const 0 i32.const 300 call $~lib/typedarray/Int32Array#__set - local.get $26 + local.get $5 i32.const 1 i32.const -1 call $~lib/typedarray/Int32Array#__set - local.get $1 - local.get $27 + local.get $0 + local.get $4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> - local.get $1 local.get $0 + local.get $1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $1 - local.get $26 + local.get $0 + local.get $5 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> - local.get $1 + local.get $0 i32.const 10 i32.const 0 i32.const 18 i32.const 8576 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $25 + local.tee $6 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> i32.const 4 call $~lib/typedarray/Uint32Array#constructor - local.tee $29 + local.tee $2 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $29 + local.get $2 i32.const 1 i32.const 300 call $~lib/typedarray/Uint32Array#__set - local.get $29 + local.get $2 i32.const 2 i32.const 100 call $~lib/typedarray/Uint32Array#__set - local.get $29 + local.get $2 i32.const 3 i32.const -1 call $~lib/typedarray/Uint32Array#__set i32.const 4 call $~lib/typedarray/Int16Array#constructor - local.tee $28 + local.tee $3 i32.const 0 i32.const -10 call $~lib/typedarray/Int16Array#__set - local.get $28 + local.get $3 i32.const 1 i32.const 100 call $~lib/typedarray/Int16Array#__set - local.get $28 + local.get $3 i32.const 2 i32.const 10 call $~lib/typedarray/Int16Array#__set - local.get $28 + local.get $3 i32.const 3 i32.const 300 call $~lib/typedarray/Int16Array#__set - local.get $1 - local.get $29 + local.get $0 + local.get $2 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> - local.get $1 - local.get $28 + local.get $0 + local.get $3 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $1 + local.get $0 i32.const 10 i32.const 0 i32.const 18 i32.const 8608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $24 + local.tee $7 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $1 + local.get $0 call $~lib/rt/pure/__release - local.get $27 + local.get $4 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.get $26 + local.get $5 call $~lib/rt/pure/__release - local.get $25 + local.get $6 call $~lib/rt/pure/__release - local.get $29 + local.get $2 call $~lib/rt/pure/__release - local.get $28 + local.get $3 call $~lib/rt/pure/__release - local.get $24 + local.get $7 call $~lib/rt/pure/__release return end diff --git a/tests/compiler/ternary.optimized.wat b/tests/compiler/ternary.optimized.wat index 23da3862e2..13620adaac 100644 --- a/tests/compiler/ternary.optimized.wat +++ b/tests/compiler/ternary.optimized.wat @@ -1,4 +1,12 @@ (module + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (memory $0 0) (export "memory" (memory $0)) + (export "test" (func $ternary/test)) + (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + local.get $2 + local.get $0 + select + ) ) diff --git a/tests/compiler/ternary.ts b/tests/compiler/ternary.ts index eeb549f099..c3010ead74 100644 --- a/tests/compiler/ternary.ts +++ b/tests/compiler/ternary.ts @@ -7,3 +7,7 @@ var a: i32; a = 0 ? unreachable() : 1; a = 1 ? 1 : unreachable(); a = (0 ? unreachable() : 1) ? 1 : unreachable(); + +export function test(x: i32, y: i32, z: i32): i32 { + return x ? y : z; +} diff --git a/tests/compiler/ternary.untouched.wat b/tests/compiler/ternary.untouched.wat index cdb295fc39..20218f8bf0 100644 --- a/tests/compiler/ternary.untouched.wat +++ b/tests/compiler/ternary.untouched.wat @@ -1,9 +1,11 @@ (module (type $none_=>_none (func)) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (memory $0 0) (table $0 1 funcref) (global $ternary/a (mut i32) (i32.const 0)) (export "memory" (memory $0)) + (export "test" (func $ternary/test)) (start $~start) (func $start:ternary i32.const 1 @@ -19,6 +21,14 @@ i32.const 1 global.set $ternary/a ) + (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + if (result i32) + local.get $1 + else + local.get $2 + end + ) (func $~start call $start:ternary ) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index 215533560e..f7960187bc 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -292,7 +292,7 @@ end local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const 1 i32.and i32.eqz @@ -312,35 +312,35 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load local.tee $5 + i32.load + local.tee $2 i32.const 1 i32.and if - local.get $3 + local.get $4 i32.const -4 i32.and i32.const 16 i32.add - local.get $5 + local.get $2 i32.const -4 i32.and i32.add - local.tee $2 + local.tee $3 i32.const 1073741808 i32.lt_u if local.get $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 local.get $3 + local.get $4 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store local.get $1 i32.const 16 @@ -350,12 +350,12 @@ i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.load - local.set $5 + local.set $2 end end - local.get $3 + local.get $4 i32.const 2 i32.and if @@ -363,7 +363,7 @@ i32.const 4 i32.sub i32.load - local.tee $2 + local.tee $3 i32.load local.tee $7 i32.const 1 @@ -382,42 +382,44 @@ i32.and i32.const 16 i32.add - local.get $3 + local.get $4 i32.const -4 i32.and i32.add local.tee $8 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $3 local.get $8 local.get $7 i32.const 3 i32.and i32.or - local.tee $3 + local.tee $4 i32.store - local.get $2 - local.set $1 + local.get $3 + else + local.get $1 end + local.set $1 end - local.get $4 local.get $5 + local.get $2 i32.const 2 i32.or i32.store - local.get $3 + local.get $4 i32.const -4 i32.and - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if (result i32) - local.get $2 + local.get $3 i32.const 1073741808 i32.lt_u else @@ -432,12 +434,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $1 i32.const 16 i32.add i32.add - local.get $4 + local.get $5 i32.ne if i32.const 0 @@ -447,38 +449,38 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 4 i32.sub local.get $1 i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if - local.get $2 + local.get $3 i32.const 4 i32.shr_u - local.set $2 + local.set $3 else - local.get $2 + local.get $3 i32.const 31 - local.get $2 + local.get $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 7 i32.sub local.set $6 end - local.get $2 + local.get $3 i32.const 16 i32.lt_u i32.const 0 @@ -496,7 +498,7 @@ unreachable end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -505,21 +507,21 @@ i32.shl i32.add i32.load offset=96 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $3 + local.get $4 i32.store offset=20 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 local.get $1 i32.store offset=16 end local.get $0 - local.get $2 + local.get $3 local.get $6 i32.const 4 i32.shl @@ -546,7 +548,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $2 + local.get $3 i32.shl i32.or i32.store offset=4 @@ -1056,22 +1058,22 @@ i32.const 0 global.set $while/ran i32.const 10 - local.set $1 + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end - local.get $1 + local.get $0 if i32.const 0 i32.const 1040 @@ -1080,7 +1082,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 10 i32.ne if @@ -1109,25 +1111,25 @@ i32.const 0 global.set $while/ran i32.const 1 - local.set $1 + local.set $0 loop $while-continue|00 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.add - local.tee $2 + local.tee $3 else i32.const 0 end br_if $while-continue|00 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -1138,7 +1140,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.ne if @@ -1154,15 +1156,15 @@ i32.const 0 global.set $while/ran loop $while-continue|01 - local.get $3 + local.get $2 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 10 i32.ne br_if $while-continue|01 end - local.get $3 + local.get $2 i32.const 10 i32.ne if @@ -1176,17 +1178,17 @@ i32.const 1 global.set $while/ran i32.const 0 - local.set $3 + local.set $2 loop $while-continue|002 - local.get $3 + local.get $2 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 10 i32.ne br_if $while-continue|002 end - local.get $3 + local.get $2 i32.const 10 i32.ne if @@ -1212,18 +1214,18 @@ i32.const 0 global.set $while/ran i32.const 10 - local.set $3 + local.set $2 loop $while-continue|04 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.const 1 i32.sub - local.set $3 + local.set $2 br $while-continue|04 end end - local.get $3 + local.get $2 if i32.const 0 i32.const 1040 @@ -1237,30 +1239,30 @@ i32.const 0 global.set $while/ran i32.const 10 - local.set $1 - i32.const 10 local.set $0 + i32.const 10 + local.set $1 loop $while-continue|03 - local.get $1 + local.get $0 if loop $while-continue|1 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|1 end end - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|03 end end - local.get $1 + local.get $0 if i32.const 0 i32.const 1040 @@ -1269,7 +1271,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1040 @@ -1283,38 +1285,38 @@ i32.const 0 global.set $while/ran i32.const 0 - local.set $3 + local.set $2 call $while/Ref#constructor - local.set $1 + local.set $0 loop $while-continue|05 - local.get $1 + local.get $0 if - local.get $3 + local.get $2 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 10 i32.eq if i32.const 0 - local.set $0 - local.get $1 + local.set $1 + local.get $0 if - local.get $1 + local.get $0 call $~lib/rt/pure/__release end else call $while/Ref#constructor - local.set $0 - local.get $1 + local.set $1 + local.get $0 call $~lib/rt/pure/__release end - local.get $0 - local.set $1 + local.get $1 + local.set $0 br $while-continue|05 end end - local.get $3 + local.get $2 i32.const 10 i32.ne if @@ -1325,7 +1327,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 if i32.const 0 i32.const 1040 @@ -1336,7 +1338,7 @@ end i32.const 1 global.set $while/ran - local.get $1 + local.get $0 call $~lib/rt/pure/__release global.get $while/ran i32.eqz @@ -1351,37 +1353,37 @@ i32.const 0 global.set $while/ran i32.const 0 - local.set $3 + local.set $2 call $while/Ref#constructor - local.set $1 + local.set $0 loop $while-continue|06 block $while-break|0 call $while/Ref#constructor - local.tee $2 + local.tee $3 call $~lib/rt/pure/__release - local.get $2 + local.get $3 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 $while-break|0 end br $while-continue|06 end end end - local.get $3 + local.get $2 i32.const 10 i32.ne if @@ -1392,7 +1394,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 if i32.const 0 i32.const 1040 @@ -1403,7 +1405,7 @@ end i32.const 1 global.set $while/ran - local.get $1 + local.get $0 call $~lib/rt/pure/__release global.get $while/ran i32.eqz @@ -1418,12 +1420,12 @@ i32.const 0 global.set $while/ran i32.const 0 - local.set $3 + local.set $2 loop $while-continue|067 - local.get $3 + local.get $2 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 1 i32.lt_s br_if $while-continue|067 @@ -1433,12 +1435,12 @@ i32.const 0 global.set $while/ran i32.const 0 - local.set $3 + local.set $2 loop $while-continue|08 - local.get $3 + local.get $2 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 1 i32.lt_s br_if $while-continue|08