diff --git a/src/module.ts b/src/module.ts index d8a61102cb..82416c412c 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1526,11 +1526,12 @@ export class Module { passes.push("remove-unused-brs"); passes.push("remove-unused-names"); passes.push("merge-blocks"); - passes.push("precompute"); + passes.push("precompute-propagate"); } if (optimizeLevel >= 3) { passes.push("flatten"); passes.push("simplify-locals-notee-nostructure"); + passes.push("merge-locals"); passes.push("vacuum"); passes.push("code-folding"); @@ -1548,12 +1549,11 @@ export class Module { passes.push("optimize-instructions"); 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"); if (optimizeLevel >= 3 || shrinkLevel >= 2) { + passes.push("inlining"); passes.push("precompute-propagate"); } else { passes.push("precompute"); @@ -1581,9 +1581,6 @@ export class Module { passes.push("merge-locals"); } passes.push("vacuum"); - if (optimizeLevel >= 3 || shrinkLevel >= 1) { - passes.push("code-folding"); - } if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("simplify-globals-optimizing"); } @@ -1622,6 +1619,9 @@ export class Module { passes.push("simplify-globals"); passes.push("vacuum"); } + if (optimizeLevel >= 3 || shrinkLevel >= 1) { + passes.push("code-folding"); + } // precompute works best after global optimizations if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("precompute-propagate"); @@ -1656,7 +1656,7 @@ export class Module { passes.push("simplify-locals"); passes.push("vacuum"); - passes.push("inlining-optimizing"); + passes.push("inlining"); passes.push("precompute-propagate"); passes.push("vacuum"); diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index b1142a3589..5460f37373 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -952,16 +952,16 @@ i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 i32.const 1200 i32.store - local.get $3 + local.get $2 call $~lib/rt/pure/__retain - local.tee $1 - local.set $2 - local.get $1 - i32.load local.tee $0 + local.set $3 + local.get $0 + i32.load + local.tee $1 i32.eqz if i32.const 1232 @@ -971,25 +971,25 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $2 i32.load - local.tee $2 + local.tee $0 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 $0 call $~lib/rt/pure/__release end + local.get $3 local.get $1 - local.get $0 i32.store - local.get $1 - call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release ) (func $~lib/rt/pure/decrement (param $0 i32) (local $1 i32) diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 13e29915e6..be58f46ecd 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -1670,29 +1670,31 @@ block $__inlined_func$~lib/string/String#concat (result i32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $0 i32.const 1424 - local.get $2 + local.get $0 select local.set $3 local.get $1 call $~lib/rt/pure/__retain - local.tee $5 + local.tee $1 + local.set $2 + local.get $2 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $2 i32.eqz if - local.get $0 + local.get $2 i32.const 1424 i32.ne if - local.get $0 + local.get $2 call $~lib/rt/pure/__release end i32.const 1424 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 16 i32.sub i32.load offset=12 @@ -1711,38 +1713,38 @@ i32.shl local.tee $4 i32.add - local.tee $1 + local.tee $5 i32.eqz if - local.get $0 + local.get $2 call $~lib/rt/pure/__release i32.const 1344 br $__inlined_func$~lib/string/String#concat end call $~lib/rt/tlsf/maybeInitialize - local.get $1 + local.get $5 i32.const 1 call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $1 + local.tee $5 local.get $3 local.get $4 call $~lib/memory/memory.copy - local.get $1 local.get $4 + local.get $5 i32.add - local.get $0 + local.get $2 local.get $6 call $~lib/memory/memory.copy - local.get $0 + local.get $2 call $~lib/rt/pure/__release - local.get $1 + local.get $5 end - local.get $2 + local.get $0 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release ) (func $start:retain-release-sanity @@ -1759,16 +1761,16 @@ i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 call $~lib/rt/tlsf/maybeInitialize @@ -1777,42 +1779,42 @@ call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add - local.tee $1 + local.tee $0 i32.const 12 call $~lib/memory/memory.fill + local.get $0 + local.set $2 + local.get $0 local.get $1 - local.set $0 - local.get $1 - local.get $2 i32.load local.tee $4 i32.ne if - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 + local.set $2 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 $0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 12 i32.store offset=8 - local.get $2 + local.get $1 i32.const 3 i32.store offset=12 - local.get $2 + local.get $1 call $~lib/array/Array#push - local.get $2 + local.get $1 call $~lib/array/Array#push - local.get $2 + local.get $1 i32.load offset=12 - local.tee $1 + local.tee $0 i32.const 1 i32.lt_s if @@ -1823,21 +1825,21 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 2 i32.shl i32.add i32.load drop - local.get $2 local.get $1 + local.get $0 i32.store offset=12 - local.get $2 + local.get $1 call $~lib/rt/pure/__release call $~lib/rt/tlsf/maybeInitialize i32.const 16 @@ -1846,16 +1848,16 @@ i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 call $~lib/rt/tlsf/maybeInitialize @@ -1864,36 +1866,36 @@ call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add - local.tee $1 + local.tee $0 i32.const 0 call $~lib/memory/memory.fill + local.get $0 + local.set $2 + local.get $0 local.get $1 - local.set $0 - local.get $1 - local.get $2 i32.load local.tee $4 i32.ne if - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 + local.set $2 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 $0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 - local.get $2 + local.get $1 loop $for-loop|0 local.get $3 i32.const 10 @@ -1906,16 +1908,16 @@ i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 call $~lib/rt/tlsf/maybeInitialize @@ -1924,51 +1926,53 @@ call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add - local.tee $1 + local.tee $0 i32.const 0 call $~lib/memory/memory.fill + local.get $0 + local.set $2 + local.get $0 local.get $1 - local.set $0 - local.get $1 - local.get $2 i32.load local.tee $5 i32.ne if - local.get $0 + local.get $2 call $~lib/rt/pure/__retain - local.set $0 + local.set $2 local.get $5 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 $0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 - i32.const 0 + local.get $1 local.set $0 + i32.const 0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 i32.const 10 i32.lt_s if - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.load offset=12 local.tee $5 i32.const 1 i32.add - local.tee $1 + local.tee $2 call $~lib/array/ensureSize - local.get $2 + local.get $0 i32.load offset=4 local.get $5 i32.const 2 @@ -1977,19 +1981,19 @@ i32.const 1344 call $~lib/rt/pure/__retain i32.store + local.get $0 local.get $2 - local.get $1 i32.store offset=12 i32.const 1344 call $~lib/rt/pure/__release - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $2 + local.get $0 call $~lib/rt/pure/__release local.get $3 i32.const 1 @@ -2002,14 +2006,14 @@ i32.const 1360 i32.const 1392 call $~lib/string/String.__concat - local.tee $3 + local.tee $1 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $0 i32.const 1456 call $~lib/string/String.__concat - local.get $3 + local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release call $~lib/rt/pure/__release call $~lib/rt/tlsf/maybeInitialize @@ -2019,7 +2023,7 @@ i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $1 + local.tee $2 i32.const 0 i32.store call $~lib/rt/tlsf/maybeInitialize @@ -2029,31 +2033,30 @@ i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $2 + local.tee $0 i32.const 0 i32.store + local.get $0 + local.tee $1 local.get $2 - local.set $0 - local.get $2 - local.get $1 i32.load local.tee $3 i32.ne if - local.get $0 + local.get $1 call $~lib/rt/pure/__retain - local.set $0 + local.set $1 local.get $3 call $~lib/rt/pure/__release end + local.get $2 local.get $1 - local.get $0 i32.store - local.get $1 - local.set $0 + local.get $0 + local.set $3 + local.get $0 local.get $2 - local.tee $3 - local.get $1 + local.tee $1 i32.load local.tee $4 i32.ne @@ -2064,79 +2067,77 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $0 + local.get $1 local.get $3 i32.store - local.get $0 - local.set $3 - local.get $1 local.get $2 + local.get $0 i32.load - local.tee $0 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $0 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end - local.get $2 - local.get $3 - i32.store + local.get $0 local.get $1 - local.tee $3 + i32.store local.get $2 + local.tee $1 + local.get $0 i32.load - local.tee $0 + local.tee $3 i32.ne if - local.get $3 + local.get $1 call $~lib/rt/pure/__retain - local.set $3 - local.get $0 + local.set $1 + local.get $3 call $~lib/rt/pure/__release end - local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.store + local.get $0 + local.tee $1 local.get $2 - local.set $0 - local.get $2 - local.get $1 i32.load local.tee $3 i32.ne if - local.get $0 + local.get $1 call $~lib/rt/pure/__retain - local.set $0 + local.set $1 local.get $3 call $~lib/rt/pure/__release end + local.get $2 local.get $1 - local.get $0 i32.store - local.get $1 - local.tee $3 local.get $2 + local.set $3 + local.get $2 + local.get $0 i32.load - local.tee $0 + local.tee $1 i32.ne if local.get $3 call $~lib/rt/pure/__retain local.set $3 - local.get $0 + local.get $1 call $~lib/rt/pure/__release end - local.get $2 + local.get $0 local.get $3 i32.store - local.get $1 - call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release call $~lib/rt/pure/__collect ) (func $~start diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 524494194b..ec202c1064 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4570,10 +4570,10 @@ (local $4 i32) (local $5 f32) (local $6 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 block $folding-inner0 + local.get $1 + call $~lib/rt/pure/__retain + local.set $3 local.get $0 i32.load offset=12 local.tee $2 @@ -5102,10 +5102,10 @@ (local $4 i32) (local $5 f64) (local $6 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 block $folding-inner0 + local.get $1 + call $~lib/rt/pure/__retain + local.set $3 local.get $0 i32.load offset=12 local.tee $2 @@ -5653,10 +5653,10 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 block $folding-inner0 + local.get $1 + call $~lib/rt/pure/__retain + local.set $4 local.get $0 i32.load offset=12 local.tee $2 @@ -6822,29 +6822,31 @@ block $__inlined_func$~lib/string/String#concat (result i32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $0 i32.const 7984 - local.get $2 + local.get $0 select local.set $3 local.get $1 call $~lib/rt/pure/__retain - local.tee $5 + local.tee $1 + local.set $2 + local.get $2 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $2 i32.eqz if - local.get $0 + local.get $2 i32.const 7984 i32.ne if - local.get $0 + local.get $2 call $~lib/rt/pure/__release end i32.const 7984 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 16 i32.sub i32.load offset=12 @@ -6863,38 +6865,38 @@ i32.shl local.tee $4 i32.add - local.tee $1 + local.tee $5 i32.eqz if - local.get $0 + local.get $2 call $~lib/rt/pure/__release i32.const 7840 br $__inlined_func$~lib/string/String#concat end call $~lib/rt/tlsf/maybeInitialize - local.get $1 + local.get $5 i32.const 1 call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $1 + local.tee $5 local.get $3 local.get $4 call $~lib/memory/memory.copy - local.get $1 local.get $4 + local.get $5 i32.add - local.get $0 + local.get $2 local.get $6 call $~lib/memory/memory.copy - local.get $0 + local.get $2 call $~lib/rt/pure/__release - local.get $1 + local.get $5 end - local.get $2 + local.get $0 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release ) (func $std/array/createRandomString (param $0 i32) (result i32) @@ -19086,10 +19088,10 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 block $folding-inner0 + local.get $1 + call $~lib/rt/pure/__retain + local.set $4 local.get $0 i32.load offset=12 local.tee $2 @@ -19464,12 +19466,10 @@ local.get $0 i32.load offset=4 local.set $5 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.set $6 - local.get $3 - local.get $4 local.get $3 local.get $4 i32.lt_s @@ -19492,7 +19492,7 @@ local.get $1 local.get $4 local.get $1 - local.get $6 + local.get $4 i32.lt_s select end diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 40e319fa88..9adbb76781 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1359,51 +1359,51 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $6 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $8 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 i32.load8_s i32.store8 local.get $2 - local.get $8 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $4 + local.get $5 local.get $1 - local.get $8 + local.get $4 i32.load8_s i32.const -2128831035 i32.xor @@ -1413,10 +1413,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=8 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -1424,28 +1424,28 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 12 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $8 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $8 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -1454,26 +1454,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -2356,51 +2356,51 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $6 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $8 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 i32.load8_s i32.store8 local.get $2 - local.get $8 + local.get $4 i32.load8_s offset=1 i32.store8 offset=1 local.get $2 - local.get $4 + local.get $5 local.get $1 - local.get $8 + local.get $4 i32.load8_s i32.const -2128831035 i32.xor @@ -2410,10 +2410,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=4 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -2421,28 +2421,28 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 8 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $8 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $8 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -2451,26 +2451,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -2702,20 +2702,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -2725,29 +2725,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load i32.store local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $4 local.get $5 + local.get $4 i32.load call $~lib/util/hash/hash32 local.get $1 @@ -2755,10 +2753,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=8 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -2766,28 +2764,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 12 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -2796,26 +2794,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -3051,7 +3049,7 @@ i32.const 0 i32.store offset=20 loop $for-loop|1 - local.get $2 + local.get $0 i32.const 24 i32.shl i32.const 24 @@ -3060,7 +3058,7 @@ i32.lt_s if local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#has if i32.const 0 @@ -3071,8 +3069,8 @@ unreachable end local.get $1 - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 24 i32.shl i32.const 24 @@ -3082,7 +3080,7 @@ call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#has i32.eqz if @@ -3094,9 +3092,9 @@ unreachable end local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#get - local.get $2 + local.get $0 i32.const 24 i32.shl i32.const 24 @@ -3112,10 +3110,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end @@ -3132,9 +3130,9 @@ unreachable end i32.const 0 - local.set $2 + local.set $0 loop $for-loop|3 - local.get $2 + local.get $0 i32.const 24 i32.shl i32.const 24 @@ -3143,7 +3141,7 @@ i32.lt_s if local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#has i32.eqz if @@ -3155,9 +3153,9 @@ unreachable end local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#get - local.get $2 + local.get $0 i32.const 24 i32.shl i32.const 24 @@ -3174,8 +3172,8 @@ unreachable end local.get $1 - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 24 i32.shl i32.const 24 @@ -3185,7 +3183,7 @@ call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#has i32.eqz if @@ -3197,9 +3195,9 @@ unreachable end local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#get - local.get $2 + local.get $0 i32.const 24 i32.shl i32.const 24 @@ -3215,10 +3213,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|3 end end @@ -3234,21 +3232,23 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $0 local.get $1 i32.load offset=8 - local.set $5 + local.set $4 local.get $1 i32.load offset=16 local.tee $6 call $~lib/array/Array#constructor - local.set $2 + local.set $5 loop $for-loop|0 - local.get $4 + local.get $3 local.get $6 i32.lt_s if - local.get $5 local.get $4 + local.get $3 i32.const 12 i32.mul i32.add @@ -3258,7 +3258,7 @@ i32.and i32.eqz if - local.get $2 + local.get $5 local.get $0 local.get $7 i32.load8_s @@ -3268,14 +3268,14 @@ i32.add local.set $0 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $2 + local.get $5 local.get $0 call $~lib/array/Array#set:length local.get $1 @@ -3309,15 +3309,15 @@ i32.const 0 i32.store offset=20 call $~lib/map/Map#constructor - local.set $4 + local.set $3 loop $for-loop|4 - local.get $3 local.get $2 + local.get $5 i32.load offset=12 i32.lt_s if - local.get $3 local.get $2 + local.get $5 i32.load offset=12 i32.ge_u if @@ -3328,18 +3328,18 @@ call $~lib/builtins/abort unreachable end - local.get $3 local.get $2 + local.get $5 i32.load offset=4 i32.add i32.load8_s - local.set $5 + local.set $4 local.get $6 - local.get $3 + local.get $2 call $~lib/array/Array#__get local.set $7 local.get $1 - local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -3365,22 +3365,22 @@ unreachable end local.get $0 - local.get $5 - local.get $5 + local.get $4 + local.get $4 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $4 + local.get $3 local.get $7 i32.const 20 i32.sub - local.tee $5 - local.get $5 + local.tee $4 + local.get $4 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|4 end end @@ -3396,7 +3396,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -3409,9 +3409,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $2 loop $for-loop|6 - local.get $3 + local.get $2 i32.const 24 i32.shl i32.const 24 @@ -3420,7 +3420,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -3432,9 +3432,9 @@ unreachable end local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.const 24 i32.shl i32.const 24 @@ -3451,10 +3451,10 @@ unreachable end local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#delete local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -3464,10 +3464,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|6 end end @@ -3484,9 +3484,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $2 loop $for-loop|8 - local.get $3 + local.get $2 i32.const 24 i32.shl i32.const 24 @@ -3495,7 +3495,7 @@ i32.lt_s if local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -3506,8 +3506,8 @@ unreachable end local.get $1 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 24 i32.shl i32.const 24 @@ -3517,7 +3517,7 @@ call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -3529,10 +3529,10 @@ unreachable end local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#delete local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -3542,10 +3542,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|8 end end @@ -3573,13 +3573,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -3613,51 +3613,51 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $6 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $8 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 i32.load8_u i32.store8 local.get $2 - local.get $8 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $4 + local.get $5 local.get $1 - local.get $8 + local.get $4 i32.load8_u i32.const -2128831035 i32.xor @@ -3667,10 +3667,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=8 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -3678,28 +3678,28 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 12 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $8 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $8 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -3708,26 +3708,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -3945,51 +3945,51 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $6 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $8 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 i32.load8_u i32.store8 local.get $2 - local.get $8 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 - local.get $4 + local.get $5 local.get $1 - local.get $8 + local.get $4 i32.load8_u i32.const -2128831035 i32.xor @@ -3999,10 +3999,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=4 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -4010,28 +4010,28 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 8 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $8 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $8 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -4040,26 +4040,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -4303,14 +4303,14 @@ i32.const 0 i32.store offset=20 loop $for-loop|1 - local.get $2 + local.get $0 i32.const 255 i32.and i32.const 100 i32.lt_u if local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#has if i32.const 0 @@ -4321,8 +4321,8 @@ unreachable end local.get $1 - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 255 i32.and i32.const 10 @@ -4330,7 +4330,7 @@ call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#has i32.eqz if @@ -4342,9 +4342,9 @@ unreachable end local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#get - local.get $2 + local.get $0 i32.const 255 i32.and i32.const 10 @@ -4358,10 +4358,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end @@ -4378,16 +4378,16 @@ unreachable end i32.const 0 - local.set $2 + local.set $0 loop $for-loop|3 - local.get $2 + local.get $0 i32.const 255 i32.and i32.const 100 i32.lt_u if local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#has i32.eqz if @@ -4399,9 +4399,9 @@ unreachable end local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#get - local.get $2 + local.get $0 i32.const 255 i32.and i32.const 10 @@ -4416,8 +4416,8 @@ unreachable end local.get $1 - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 255 i32.and i32.const 20 @@ -4425,7 +4425,7 @@ call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#has i32.eqz if @@ -4437,9 +4437,9 @@ unreachable end local.get $1 - local.get $2 + local.get $0 call $~lib/map/Map#get - local.get $2 + local.get $0 i32.const 255 i32.and i32.const 20 @@ -4453,10 +4453,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|3 end end @@ -4472,21 +4472,23 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $0 local.get $1 i32.load offset=8 - local.set $5 + local.set $4 local.get $1 i32.load offset=16 local.tee $6 call $~lib/array/Array#constructor - local.set $2 + local.set $5 loop $for-loop|0 - local.get $4 + local.get $3 local.get $6 i32.lt_s if - local.get $5 local.get $4 + local.get $3 i32.const 12 i32.mul i32.add @@ -4496,7 +4498,7 @@ i32.and i32.eqz if - local.get $2 + local.get $5 local.get $0 local.get $7 i32.load8_u @@ -4506,14 +4508,14 @@ i32.add local.set $0 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $2 + local.get $5 local.get $0 call $~lib/array/Array#set:length local.get $1 @@ -4547,15 +4549,15 @@ i32.const 0 i32.store offset=20 call $~lib/map/Map#constructor - local.set $4 + local.set $3 loop $for-loop|4 - local.get $3 local.get $2 + local.get $5 i32.load offset=12 i32.lt_s if - local.get $3 local.get $2 + local.get $5 i32.load offset=12 i32.ge_u if @@ -4566,18 +4568,18 @@ call $~lib/builtins/abort unreachable end - local.get $3 local.get $2 + local.get $5 i32.load offset=4 i32.add i32.load8_u - local.set $5 + local.set $4 local.get $6 - local.get $3 + local.get $2 call $~lib/array/Array#__get local.set $7 local.get $1 - local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -4603,22 +4605,22 @@ unreachable end local.get $0 - local.get $5 - local.get $5 + local.get $4 + local.get $4 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $4 + local.get $3 local.get $7 i32.const 20 i32.sub - local.tee $5 - local.get $5 + local.tee $4 + local.get $4 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|4 end end @@ -4634,7 +4636,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -4647,16 +4649,16 @@ unreachable end i32.const 0 - local.set $3 + local.set $2 loop $for-loop|6 - local.get $3 + local.get $2 i32.const 255 i32.and i32.const 50 i32.lt_u if local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -4668,9 +4670,9 @@ unreachable end local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.const 255 i32.and i32.const 20 @@ -4685,10 +4687,10 @@ unreachable end local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#delete local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -4698,10 +4700,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|6 end end @@ -4718,16 +4720,16 @@ unreachable end i32.const 0 - local.set $3 + local.set $2 loop $for-loop|8 - local.get $3 + local.get $2 i32.const 255 i32.and i32.const 50 i32.lt_u if local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -4738,8 +4740,8 @@ unreachable end local.get $1 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 255 i32.and i32.const 10 @@ -4747,7 +4749,7 @@ call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has i32.eqz if @@ -4759,10 +4761,10 @@ unreachable end local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#delete local.get $1 - local.get $3 + local.get $2 call $~lib/map/Map#has if i32.const 0 @@ -4772,10 +4774,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|8 end end @@ -4803,13 +4805,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -4900,20 +4902,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -4923,29 +4925,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load16_s i32.store16 local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $4 local.get $5 + local.get $4 i32.load16_s call $~lib/util/hash/hash16 local.get $1 @@ -4953,10 +4953,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=8 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -4964,28 +4964,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 12 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -4994,26 +4994,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -5281,20 +5281,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 @@ -5304,29 +5304,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load16_s i32.store16 local.get $2 - local.get $5 + local.get $4 i32.load16_s offset=2 i32.store16 offset=2 local.get $2 - local.get $4 local.get $5 + local.get $4 i32.load16_s call $~lib/util/hash/hash16 local.get $1 @@ -5334,10 +5332,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=4 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -5345,28 +5343,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 8 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -5375,26 +5373,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -6198,20 +6196,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -6221,29 +6219,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load16_u i32.store16 local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $4 local.get $5 + local.get $4 i32.load16_u call $~lib/util/hash/hash16 local.get $1 @@ -6251,10 +6247,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=8 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -6262,28 +6258,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 12 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -6292,26 +6288,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -6525,20 +6521,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 @@ -6548,29 +6544,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load16_u i32.store16 local.get $2 - local.get $5 + local.get $4 i32.load16_u offset=2 i32.store16 offset=2 local.get $2 - local.get $4 local.get $5 + local.get $4 i32.load16_u call $~lib/util/hash/hash16 local.get $1 @@ -6578,10 +6572,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=4 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -6589,28 +6583,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 8 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -6619,26 +6613,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -8658,20 +8652,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 @@ -8681,29 +8675,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i64.load i64.store local.get $2 - local.get $5 + local.get $4 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $4 local.get $5 + local.get $4 i64.load call $~lib/util/hash/hash64 local.get $1 @@ -8711,10 +8703,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=12 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -8722,28 +8714,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 16 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -8752,26 +8744,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -9104,20 +9096,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 24 @@ -9127,29 +9119,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i64.load i64.store local.get $2 - local.get $5 + local.get $4 i64.load offset=8 i64.store offset=8 local.get $2 - local.get $4 local.get $5 + local.get $4 i64.load call $~lib/util/hash/hash64 local.get $1 @@ -9157,10 +9147,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=16 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -9168,28 +9158,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 24 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -9198,26 +9188,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -10630,20 +10620,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -10653,29 +10643,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 f32.load f32.store local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $4 local.get $5 + local.get $4 f32.load i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -10684,10 +10672,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=8 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -10695,28 +10683,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 12 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -10725,26 +10713,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -11042,20 +11030,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -11065,29 +11053,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 f32.load f32.store local.get $2 - local.get $5 + local.get $4 f32.load offset=4 f32.store offset=4 local.get $2 - local.get $4 local.get $5 + local.get $4 f32.load i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -11096,10 +11082,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=8 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -11107,28 +11093,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 12 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -11137,26 +11123,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -11879,20 +11865,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 @@ -11902,29 +11888,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 f64.load f64.store local.get $2 - local.get $5 + local.get $4 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $4 local.get $5 + local.get $4 f64.load i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -11933,10 +11917,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=12 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -11944,28 +11928,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 16 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -11974,26 +11958,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -12291,20 +12275,20 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $8 + local.tee $6 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $3 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=16 i32.const 24 @@ -12314,29 +12298,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $6 + local.get $4 local.get $7 i32.ne if - local.get $6 - local.set $5 - local.get $6 + local.get $4 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 f64.load f64.store local.get $2 - local.get $5 + local.get $4 f64.load offset=8 f64.store offset=8 local.get $2 - local.get $4 local.get $5 + local.get $4 f64.load i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -12345,10 +12327,10 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $8 i32.load i32.store offset=16 - local.get $5 + local.get $8 local.get $2 i32.store local.get $2 @@ -12356,28 +12338,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 24 i32.add - local.set $6 + local.set $4 br $while-continue|0 end end - local.get $4 - local.tee $2 + local.get $5 + local.tee $4 local.get $0 i32.load - local.tee $6 + local.tee $2 i32.ne if - local.get $2 + local.get $4 call $~lib/rt/pure/__retain - local.set $2 - local.get $6 + local.set $4 + local.get $2 call $~lib/rt/pure/__release end local.get $0 - local.get $2 + local.get $4 i32.store local.get $0 local.get $1 @@ -12386,26 +12368,26 @@ local.tee $1 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $2 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $8 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 6e20d3f0b2..a4fdf778e8 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -1734,23 +1734,22 @@ end ) (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) + (local $1 i32) + (local $2 f32) (local $3 f64) local.get $0 - local.tee $1 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $2 + local.tee $1 i32.const 1065353216 i32.ge_u if - local.get $2 + local.get $1 i32.const 1065353216 i32.eq if - local.get $1 + local.get $0 f32.const 1.5707963705062866 f32.mul f32.const 7.52316384526264e-37 @@ -1758,32 +1757,32 @@ return end f32.const 0 - local.get $1 - local.get $1 + local.get $0 + local.get $0 f32.sub f32.div return end - local.get $2 + local.get $1 i32.const 1056964608 i32.lt_u if - local.get $2 + local.get $1 i32.const 8388608 i32.ge_u i32.const 0 - local.get $2 + local.get $1 i32.const 964689920 i32.lt_u select if - local.get $1 + local.get $0 return end - local.get $1 - local.get $1 - local.get $1 - local.get $1 + local.get $0 + local.get $0 + local.get $0 + local.get $0 f32.mul call $~lib/math/Rf f32.mul @@ -1792,17 +1791,17 @@ end f64.const 1.5707963705062866 f32.const 0.5 - local.get $1 + local.get $0 f32.abs f32.const 0.5 f32.mul f32.sub - local.tee $0 + local.tee $2 f64.promote_f32 f64.sqrt local.tee $3 local.get $3 - local.get $0 + local.get $2 call $~lib/math/Rf f64.promote_f32 f64.mul @@ -1811,7 +1810,7 @@ f64.mul f64.sub f32.demote_f64 - local.get $1 + local.get $0 f32.copysign ) (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) @@ -2739,6 +2738,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 1 local.get $0 local.get $0 @@ -2753,12 +2753,9 @@ f32.add return end - local.get $0 - i32.reinterpret_f32 - local.set $3 local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $3 i32.const 1065353216 i32.eq if @@ -2766,21 +2763,23 @@ call $~lib/math/NativeMathf.atan return end - local.get $4 + local.get $3 i32.const 30 i32.shr_u i32.const 2 i32.and - local.get $3 + local.get $0 + i32.reinterpret_f32 + local.tee $5 i32.const 31 i32.shr_u i32.or local.set $2 - local.get $4 + local.get $3 i32.const 2147483647 i32.and local.set $4 - local.get $3 + local.get $5 i32.const 2147483647 i32.and local.tee $3 @@ -3689,23 +3688,28 @@ end local.set $6 global.get $~lib/math/rempio2_y0 - local.set $0 + local.set $3 global.get $~lib/math/rempio2_y1 local.set $4 local.get $6 i32.const 1 i32.and if (result f64) - local.get $0 - local.get $0 - f64.mul - local.tee $3 - local.get $0 - f64.mul - local.tee $1 local.get $3 local.get $3 + f64.mul + local.tee $0 + local.get $3 + f64.mul + local.set $1 local.get $3 + local.get $0 + local.get $4 + f64.const 0.5 + f64.mul + local.get $1 + local.get $0 + local.get $0 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -3713,31 +3717,18 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $3 - local.get $3 - local.get $3 + local.get $0 + local.get $0 + local.get $0 f64.mul f64.mul - local.get $3 + local.get $0 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 f64.add f64.mul f64.add - local.tee $7 - f64.mul - f64.const -0.16666666666666632 - f64.add - f64.mul - drop - local.get $0 - local.get $3 - local.get $4 - f64.const 0.5 - f64.mul - local.get $1 - local.get $7 f64.mul f64.sub f64.mul @@ -3750,10 +3741,10 @@ f64.sub else f64.const 1 - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.mul - local.tee $3 + local.tee $0 f64.const 0.5 f64.mul local.tee $1 @@ -3764,10 +3755,10 @@ f64.sub local.get $1 f64.sub - local.get $3 - local.get $3 - local.get $3 - local.get $3 + local.get $0 + local.get $0 + local.get $0 + local.get $0 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -3776,14 +3767,14 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.mul local.tee $1 local.get $1 f64.mul - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -3794,7 +3785,7 @@ f64.mul f64.add f64.mul - local.get $0 + local.get $3 local.get $4 f64.mul f64.sub @@ -8552,41 +8543,39 @@ (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $8 f32) local.get $1 i32.reinterpret_f32 - local.tee $6 + local.tee $4 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $8 + local.set $5 local.get $0 i32.reinterpret_f32 - local.tee $3 + local.tee $2 i32.const 31 i32.shr_u - local.set $5 + local.set $7 i32.const 1 local.get $1 local.get $1 f32.ne - local.get $3 - local.tee $2 + local.get $2 i32.const 23 i32.shr_u i32.const 255 i32.and - local.tee $9 + local.tee $3 i32.const 255 i32.eq i32.const 1 - local.get $6 + local.get $4 i32.const 1 i32.shl select @@ -8608,7 +8597,7 @@ local.get $0 return end - local.get $9 + local.get $3 if (result i32) local.get $2 i32.const 8388607 @@ -8618,45 +8607,45 @@ else local.get $2 i32.const 1 - local.get $9 + local.get $3 local.get $2 i32.const 9 i32.shl i32.clz i32.sub - local.tee $9 + local.tee $3 i32.sub i32.shl end local.set $2 - local.get $8 + local.get $5 if (result i32) - local.get $6 + local.get $4 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $6 + local.get $4 i32.const 1 - local.get $8 - local.get $6 + local.get $5 + local.get $4 i32.const 9 i32.shl i32.clz i32.sub - local.tee $8 + local.tee $5 i32.sub i32.shl end - local.set $3 + local.set $4 block $do-break|0 - local.get $9 - local.get $8 + local.get $3 + local.get $5 i32.lt_s if - local.get $8 - local.get $9 + local.get $5 + local.get $3 i32.const 1 i32.add i32.eq @@ -8665,20 +8654,20 @@ return end loop $while-continue|1 - local.get $9 - local.get $8 + local.get $3 + local.get $5 i32.gt_s if local.get $2 - local.get $3 + local.get $4 i32.ge_u if (result i32) - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 local.get $2 - local.get $3 + local.get $4 i32.sub else local.get $2 @@ -8686,52 +8675,52 @@ i32.const 1 i32.shl local.set $2 - local.get $7 + local.get $6 i32.const 1 i32.shl - local.set $7 - local.get $9 + local.set $6 + local.get $3 i32.const 1 i32.sub - local.set $9 + local.set $3 br $while-continue|1 end end local.get $2 - local.get $3 + local.get $4 i32.ge_u if - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 local.get $2 - local.get $3 + local.get $4 i32.sub local.set $2 end local.get $2 if - local.get $9 + local.get $3 local.get $2 i32.const 8 i32.shl i32.clz - local.tee $3 + local.tee $4 i32.sub - local.set $9 + local.set $3 local.get $2 - local.get $3 + local.get $4 i32.shl local.set $2 else i32.const -30 - local.set $9 + local.set $3 end end i32.const 1 i32.const 1 - local.get $7 + local.get $6 i32.const 1 i32.and i32.const 0 @@ -8741,16 +8730,16 @@ local.get $2 i32.const 8388608 i32.sub - local.get $9 + local.get $3 i32.const 23 i32.shl i32.or local.get $2 i32.const 1 - local.get $9 + local.get $3 i32.sub i32.shr_u - local.get $9 + local.get $3 i32.const 0 i32.gt_s select @@ -8758,22 +8747,22 @@ local.tee $0 local.get $0 f32.add - local.tee $4 + local.tee $8 f32.eq select - local.get $4 + local.get $8 local.get $1 f32.gt select i32.const 0 - local.get $8 - local.get $9 + local.get $5 + local.get $3 i32.const 1 i32.add i32.eq select - local.get $8 - local.get $9 + local.get $3 + local.get $5 i32.eq select if @@ -8785,7 +8774,7 @@ local.get $0 f32.neg local.get $0 - local.get $5 + local.get $7 select ) (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) @@ -8988,7 +8977,7 @@ end local.set $6 global.get $~lib/math/rempio2_y0 - local.set $0 + local.set $3 global.get $~lib/math/rempio2_y1 local.set $4 local.get $6 @@ -8996,10 +8985,10 @@ i32.and if (result f64) f64.const 1 - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.mul - local.tee $3 + local.tee $0 f64.const 0.5 f64.mul local.tee $1 @@ -9010,10 +8999,10 @@ f64.sub local.get $1 f64.sub - local.get $3 - local.get $3 - local.get $3 - local.get $3 + local.get $0 + local.get $0 + local.get $0 + local.get $0 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -9022,14 +9011,14 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.mul local.tee $1 local.get $1 f64.mul - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -9040,23 +9029,28 @@ f64.mul f64.add f64.mul - local.get $0 + local.get $3 local.get $4 f64.mul f64.sub f64.add f64.add else - local.get $0 - local.get $0 - f64.mul - local.tee $3 - local.get $0 - f64.mul - local.tee $1 local.get $3 local.get $3 + f64.mul + local.tee $0 + local.get $3 + f64.mul + local.set $1 local.get $3 + local.get $0 + local.get $4 + f64.const 0.5 + f64.mul + local.get $1 + local.get $0 + local.get $0 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -9064,31 +9058,18 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $3 - local.get $3 - local.get $3 + local.get $0 + local.get $0 + local.get $0 f64.mul f64.mul - local.get $3 + local.get $0 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 f64.add f64.mul f64.add - local.tee $7 - f64.mul - f64.const -0.16666666666666632 - f64.add - f64.mul - drop - local.get $0 - local.get $3 - local.get $4 - f64.const 0.5 - f64.mul - local.get $1 - local.get $7 f64.mul f64.sub f64.mul @@ -10644,19 +10625,19 @@ local.tee $4 local.get $4 f64.mul - local.tee $2 + local.tee $0 local.get $4 f64.mul - local.set $0 + local.set $2 local.get $4 - local.get $2 + local.get $0 global.get $~lib/math/rempio2_y1 - local.tee $7 + local.tee $1 f64.const 0.5 f64.mul - local.get $0 - local.get $2 local.get $2 + local.get $0 + local.get $0 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -10664,13 +10645,13 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $2 - local.get $2 - local.get $2 + local.get $0 + local.get $0 + local.get $0 f64.mul - local.tee $1 + local.tee $7 f64.mul - local.get $2 + local.get $0 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 @@ -10680,17 +10661,17 @@ f64.mul f64.sub f64.mul - local.get $7 + local.get $1 f64.sub - local.get $0 + local.get $2 f64.const -0.16666666666666632 f64.mul f64.sub f64.sub local.tee $8 - local.set $0 + local.set $2 f64.const 1 - local.get $2 + local.get $0 f64.const 0.5 f64.mul local.tee $9 @@ -10701,10 +10682,10 @@ f64.sub local.get $9 f64.sub - local.get $2 - local.get $2 - local.get $2 - local.get $2 + local.get $0 + local.get $0 + local.get $0 + local.get $0 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -10713,11 +10694,11 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $1 - local.get $1 + local.get $7 + local.get $7 f64.mul - local.get $2 - local.get $2 + local.get $0 + local.get $0 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -10729,37 +10710,36 @@ f64.add f64.mul local.get $4 - local.get $7 + local.get $1 f64.mul f64.sub f64.add f64.add - local.tee $2 - local.set $4 + local.set $0 local.get $6 i32.const 1 i32.and if + local.get $0 + local.set $2 local.get $8 f64.neg - local.set $4 - local.get $2 local.set $0 end local.get $6 i32.const 2 i32.and - if (result f64) - local.get $4 + if + local.get $2 f64.neg - local.set $4 + local.set $2 local.get $0 f64.neg - else - local.get $0 + local.set $0 end + local.get $2 global.set $~lib/math/NativeMath.sincos_sin - local.get $4 + local.get $0 global.set $~lib/math/NativeMath.sincos_cos ) (func $std/math/test_sincos (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 824e3ffba0..6b8e4d3669 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -3464,51 +3464,50 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 + local.set $5 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $3 local.get $0 i32.load offset=8 - local.tee $5 + 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 $7 + local.get $3 local.set $2 loop $while-continue|0 - local.get $5 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $5 - local.tee $3 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $3 + local.get $4 i32.load16_s i32.store16 local.get $2 - local.get $6 - local.get $3 + local.get $5 + local.get $4 i32.load16_s call $~lib/util/hash/hash16 local.get $1 @@ -3516,10 +3515,10 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $8 i32.load i32.store offset=4 - local.get $3 + local.get $8 local.get $2 i32.store local.get $2 @@ -3527,58 +3526,58 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 8 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end - local.get $6 - local.tee $3 + local.get $5 + local.tee $4 local.get $0 i32.load local.tee $2 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 $0 - local.get $3 + local.get $4 i32.store local.get $0 local.get $1 i32.store offset=4 - local.get $4 + local.get $3 local.tee $1 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) @@ -4293,51 +4292,50 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 + local.set $5 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $3 local.get $0 i32.load offset=8 - local.tee $5 + 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 $7 + local.get $3 local.set $2 loop $while-continue|0 - local.get $5 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $5 - local.tee $3 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $3 + local.get $4 i32.load16_u i32.store16 local.get $2 - local.get $6 - local.get $3 + local.get $5 + local.get $4 i32.load16_u call $~lib/util/hash/hash16 local.get $1 @@ -4345,10 +4343,10 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $8 i32.load i32.store offset=4 - local.get $3 + local.get $8 local.get $2 i32.store local.get $2 @@ -4356,58 +4354,58 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 8 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end - local.get $6 - local.tee $3 + local.get $5 + local.tee $4 local.get $0 i32.load local.tee $2 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 $0 - local.get $3 + local.get $4 i32.store local.get $0 local.get $1 i32.store offset=4 - local.get $4 + local.get $3 local.tee $1 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) @@ -5130,51 +5128,50 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 + local.set $5 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $3 local.get $0 i32.load offset=8 - local.tee $5 + 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 $7 + local.get $3 local.set $2 loop $while-continue|0 - local.get $5 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $5 - local.tee $3 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $3 + local.get $4 i32.load i32.store local.get $2 - local.get $6 - local.get $3 + local.get $5 + local.get $4 i32.load call $~lib/util/hash/hash32 local.get $1 @@ -5182,10 +5179,10 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $8 i32.load i32.store offset=4 - local.get $3 + local.get $8 local.get $2 i32.store local.get $2 @@ -5193,58 +5190,58 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 8 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end - local.get $6 - local.tee $3 + local.get $5 + local.tee $4 local.get $0 i32.load local.tee $2 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 $0 - local.get $3 + local.get $4 i32.store local.get $0 local.get $1 i32.store offset=4 - local.get $4 + local.get $3 local.tee $1 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) @@ -6493,51 +6490,50 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 + local.set $5 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $3 local.get $0 i32.load offset=8 - local.tee $5 + 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 $7 + local.get $3 local.set $2 loop $while-continue|0 - local.get $5 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $5 - local.tee $3 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $3 + local.get $4 i64.load i64.store local.get $2 - local.get $6 - local.get $3 + local.get $5 + local.get $4 i64.load call $~lib/util/hash/hash64 local.get $1 @@ -6545,10 +6541,10 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $8 i32.load i32.store offset=8 - local.get $3 + local.get $8 local.get $2 i32.store local.get $2 @@ -6556,58 +6552,58 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 16 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end - local.get $6 - local.tee $3 + local.get $5 + local.tee $4 local.get $0 i32.load local.tee $2 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 $0 - local.get $3 + local.get $4 i32.store local.get $0 local.get $1 i32.store offset=4 - local.get $4 + local.get $3 local.tee $1 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) @@ -6618,7 +6614,7 @@ local.get $1 local.get $1 call $~lib/util/hash/hash64 - local.tee $4 + local.tee $3 call $~lib/set/Set#find i32.eqz if @@ -6656,11 +6652,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $3 + local.get $4 i32.const 4 i32.shl i32.add @@ -6676,7 +6672,7 @@ local.get $2 local.get $0 i32.load - local.get $4 + local.get $3 local.get $0 i32.load offset=4 i32.and @@ -7827,51 +7823,50 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 + local.set $5 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $3 local.get $0 i32.load offset=8 - local.tee $5 + 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 $7 + local.get $3 local.set $2 loop $while-continue|0 - local.get $5 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $5 - local.tee $3 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $3 + local.get $4 f32.load f32.store local.get $2 - local.get $6 - local.get $3 + local.get $5 + local.get $4 f32.load i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -7880,10 +7875,10 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $8 i32.load i32.store offset=4 - local.get $3 + local.get $8 local.get $2 i32.store local.get $2 @@ -7891,58 +7886,58 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 8 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end - local.get $6 - local.tee $3 + local.get $5 + local.tee $4 local.get $0 i32.load local.tee $2 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 $0 - local.get $3 + local.get $4 i32.store local.get $0 local.get $1 i32.store offset=4 - local.get $4 + local.get $3 local.tee $1 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 f32) (result i32) @@ -7954,7 +7949,7 @@ local.get $1 i32.reinterpret_f32 call $~lib/util/hash/hash32 - local.tee $4 + local.tee $3 call $~lib/set/Set#find i32.eqz if @@ -7992,11 +7987,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.add @@ -8012,7 +8007,7 @@ local.get $2 local.get $0 i32.load - local.get $4 + local.get $3 local.get $0 i32.load offset=4 i32.and @@ -8668,51 +8663,50 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 + local.set $5 + local.get $3 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $3 local.get $0 i32.load offset=8 - local.tee $5 + 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 $7 + local.get $3 local.set $2 loop $while-continue|0 - local.get $5 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $5 - local.tee $3 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $3 + local.get $4 f64.load f64.store local.get $2 - local.get $6 - local.get $3 + local.get $5 + local.get $4 f64.load i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -8721,10 +8715,10 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $8 i32.load i32.store offset=8 - local.get $3 + local.get $8 local.get $2 i32.store local.get $2 @@ -8732,58 +8726,58 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 16 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end - local.get $6 - local.tee $3 + local.get $5 + local.tee $4 local.get $0 i32.load local.tee $2 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 $0 - local.get $3 + local.get $4 i32.store local.get $0 local.get $1 i32.store offset=4 - local.get $4 + local.get $3 local.tee $1 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.ne if local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $3 + local.get $4 call $~lib/rt/pure/__release end local.get $0 local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $6 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release ) (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (result i32) @@ -8795,7 +8789,7 @@ local.get $1 i64.reinterpret_f64 call $~lib/util/hash/hash64 - local.tee $4 + local.tee $3 call $~lib/set/Set#find i32.eqz if @@ -8833,11 +8827,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $3 + local.get $4 i32.const 4 i32.shl i32.add @@ -8853,7 +8847,7 @@ local.get $2 local.get $0 i32.load - local.get $4 + local.get $3 local.get $0 i32.load offset=4 i32.and diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index a1c9a4cf9a..ed7987951f 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -1360,53 +1360,53 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 8 - i32.shr_u - local.tee $2 - i32.const 5672 - i32.add - i32.load8_u - local.get $2 - i32.const 2032 - i32.add - i32.load8_u - i32.const 86 - i32.mul - i32.const 2032 - i32.add - local.get $0 - i32.const 255 - i32.and - local.tee $5 - i32.const 3 - i32.div_u - i32.add - i32.load8_u - local.get $5 - i32.const 3 - i32.rem_u - i32.const 2 - i32.shl - i32.const 4700 - i32.add - i32.load - i32.mul - i32.const 11 - i32.shr_u - i32.const 6 - i32.rem_u - i32.add - i32.const 2 - i32.shl - i32.const 4712 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shr_s - local.set $3 block $folding-inner0 + local.get $0 + i32.const 8 + i32.shr_u + local.tee $2 + i32.const 5672 + i32.add + i32.load8_u + local.get $2 + i32.const 2032 + i32.add + i32.load8_u + i32.const 86 + i32.mul + i32.const 2032 + i32.add + local.get $0 + i32.const 255 + i32.and + local.tee $5 + i32.const 3 + i32.div_u + i32.add + i32.load8_u + local.get $5 + i32.const 3 + i32.rem_u + i32.const 2 + i32.shl + i32.const 4700 + i32.add + i32.load + i32.mul + i32.const 11 + i32.shr_u + i32.const 6 + i32.rem_u + i32.add + i32.const 2 + i32.shl + i32.const 4712 + i32.add + i32.load + local.tee $2 + i32.const 8 + i32.shr_s + local.set $3 local.get $2 i32.const 255 i32.and @@ -1848,7 +1848,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $0 i32.const 16 i32.sub @@ -1997,7 +1996,6 @@ i32.shr_u i32.const 2 i32.shl - local.tee $10 local.tee $4 i32.const 1 i32.shl @@ -2006,19 +2004,19 @@ i32.load16_u local.get $2 i32.sub - local.tee $11 + local.tee $10 i32.eqz br_if $~lib/util/casemap/bsearch|inlined.0 - local.get $11 + local.get $10 i32.const 31 i32.shr_u if - local.get $10 + local.get $4 i32.const 4 i32.add local.set $9 else - local.get $10 + local.get $4 i32.const 4 i32.sub local.set $1 @@ -2368,7 +2366,7 @@ call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add - local.set $9 + local.set $6 loop $for-loop|0 local.get $4 local.get $8 @@ -2380,9 +2378,7 @@ i32.shl i32.add i32.load16_u - local.tee $3 - local.set $2 - local.get $3 + local.tee $1 i32.const 7 i32.shr_u if @@ -2393,7 +2389,7 @@ i32.sub i32.lt_u i32.const 0 - local.get $3 + local.get $1 i32.const 55295 i32.sub i32.const 1025 @@ -2406,7 +2402,7 @@ i32.shl i32.add i32.load16_u offset=2 - local.tee $5 + local.tee $7 i32.const 56319 i32.sub i32.const 1025 @@ -2416,11 +2412,11 @@ i32.const 1 i32.add local.set $4 - local.get $5 + local.get $7 i32.const 1023 i32.and - local.get $3 - local.tee $2 + local.get $1 + local.tee $3 i32.const 1023 i32.and i32.const 10 @@ -2428,51 +2424,51 @@ i32.or i32.const 65536 i32.add - local.tee $3 + local.tee $1 i32.const 131072 i32.ge_u if - local.get $9 - local.get $10 + local.get $6 + local.get $5 i32.const 1 i32.shl i32.add - local.get $2 - local.get $5 + local.get $3 + local.get $7 i32.const 16 i32.shl i32.or i32.store - local.get $10 + local.get $5 i32.const 1 i32.add - local.set $10 + local.set $5 br $for-continue|0 end end end - local.get $3 + local.get $1 i32.const 304 i32.eq if - local.get $9 - local.get $10 + local.get $6 + local.get $5 i32.const 1 i32.shl i32.add i32.const 50790505 i32.store - local.get $10 + local.get $5 i32.const 1 i32.add - local.set $10 + local.set $5 else - local.get $3 + local.get $1 i32.const 931 i32.eq if - local.get $9 - local.get $10 + local.get $6 + local.get $5 i32.const 1 i32.shl i32.add @@ -2482,64 +2478,62 @@ if (result i32) block $~lib/util/string/isFinalSigma|inlined.0 (result i32) i32.const 0 - local.set $1 + local.set $2 i32.const 0 local.get $4 local.tee $3 i32.const 30 i32.sub - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.gt_s select - local.set $7 + local.set $9 loop $while-continue|1 local.get $3 - local.get $7 + local.get $9 i32.gt_s if - local.get $3 - local.set $5 i32.const -1 - local.set $3 + local.set $1 block $~lib/util/string/codePointBefore|inlined.0 - local.get $5 + local.get $3 i32.const 0 i32.le_s br_if $~lib/util/string/codePointBefore|inlined.0 local.get $0 - local.get $5 + local.get $3 i32.const 1 i32.sub i32.const 1 i32.shl i32.add i32.load16_u - local.tee $2 + local.tee $7 i32.const 64512 i32.and i32.const 56320 i32.eq - local.get $5 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.ge_s i32.and if - local.get $2 + local.get $7 i32.const 1023 i32.and local.get $0 - local.get $5 + local.get $3 i32.const 2 i32.sub i32.const 1 i32.shl i32.add i32.load16_u - local.tee $6 + local.tee $10 i32.const 1023 i32.and i32.const 10 @@ -2547,8 +2541,8 @@ i32.add i32.const 65536 i32.add - local.set $3 - local.get $6 + local.set $1 + local.get $10 i32.const 64512 i32.and i32.const 55296 @@ -2556,21 +2550,21 @@ br_if $~lib/util/string/codePointBefore|inlined.0 end i32.const 65533 - local.get $2 - local.get $2 + local.get $7 + local.get $7 i32.const 63488 i32.and i32.const 55296 i32.eq select - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.const 918000 i32.lt_u if (result i32) i32.const 6658 - local.get $3 + local.get $1 call $~lib/util/string/stagedBinaryLookup else i32.const 0 @@ -2578,12 +2572,12 @@ i32.eqz if i32.const 0 - local.get $3 + local.get $1 i32.const 127370 i32.lt_u if (result i32) i32.const 9666 - local.get $3 + local.get $1 call $~lib/util/string/stagedBinaryLookup else i32.const 0 @@ -2592,10 +2586,10 @@ br_if $~lib/util/string/isFinalSigma|inlined.0 drop i32.const 1 - local.set $1 + local.set $2 end - local.get $5 local.get $3 + local.get $1 i32.const 65536 i32.ge_s i32.const 1 @@ -2606,7 +2600,7 @@ end end i32.const 0 - local.get $1 + local.get $2 i32.eqz br_if $~lib/util/string/isFinalSigma|inlined.0 drop @@ -2616,16 +2610,16 @@ local.tee $3 i32.const 30 i32.add - local.tee $2 + local.tee $1 local.get $8 - local.get $2 + local.get $1 local.get $8 i32.lt_s select - local.set $1 + local.set $2 loop $while-continue|2 local.get $3 - local.get $1 + local.get $2 i32.lt_s if local.get $0 @@ -2634,7 +2628,7 @@ i32.shl i32.add i32.load16_u - local.tee $2 + local.tee $1 i32.const 64512 i32.and i32.const 55296 @@ -2652,40 +2646,40 @@ i32.shl i32.add i32.load16_u offset=2 - local.tee $5 + local.tee $7 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $5 - local.get $2 + local.get $7 + local.get $1 i32.const 10 i32.shl i32.add i32.const -56613888 i32.add - local.set $2 + local.set $1 end end - local.get $2 + local.get $1 i32.const 918000 i32.lt_u if (result i32) i32.const 6658 - local.get $2 + local.get $1 call $~lib/util/string/stagedBinaryLookup else i32.const 0 end i32.eqz if - local.get $2 + local.get $1 i32.const 127370 i32.lt_u if (result i32) i32.const 9666 - local.get $2 + local.get $1 call $~lib/util/string/stagedBinaryLookup else i32.const 0 @@ -2694,7 +2688,7 @@ br $~lib/util/string/isFinalSigma|inlined.0 end local.get $3 - local.get $2 + local.get $1 i32.const 65536 i32.ge_u i32.const 1 @@ -2716,23 +2710,23 @@ end i32.store16 else - local.get $3 + local.get $1 i32.const 9398 i32.sub i32.const 25 i32.le_u if - local.get $9 - local.get $10 + local.get $6 + local.get $5 i32.const 1 i32.shl i32.add - local.get $3 + local.get $1 i32.const 26 i32.add i32.store16 else - local.get $3 + local.get $1 i32.const 0 call $~lib/util/casemap/casemap i32.const 2097151 @@ -2741,16 +2735,16 @@ i32.const 65536 i32.lt_u if - local.get $9 - local.get $10 + local.get $6 + local.get $5 i32.const 1 i32.shl i32.add local.get $3 i32.store16 else - local.get $9 - local.get $10 + local.get $6 + local.get $5 i32.const 1 i32.shl i32.add @@ -2771,23 +2765,23 @@ i32.shl i32.or i32.store - local.get $10 + local.get $5 i32.const 1 i32.add - local.set $10 + local.set $5 end end end end end else - local.get $9 - local.get $10 + local.get $6 + local.get $5 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 @@ -2803,15 +2797,15 @@ i32.const 1 i32.add local.set $4 - local.get $10 + local.get $5 i32.const 1 i32.add - local.set $10 + local.set $5 br $for-loop|0 end end - local.get $9 - local.get $10 + local.get $6 + local.get $5 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc @@ -3121,29 +3115,31 @@ block $__inlined_func$~lib/string/String#concat (result i32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $0 i32.const 18624 - local.get $2 + local.get $0 select local.set $3 local.get $1 call $~lib/rt/pure/__retain - local.tee $5 + local.tee $1 + local.set $2 + local.get $2 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $2 i32.eqz if - local.get $0 + local.get $2 i32.const 18624 i32.ne if - local.get $0 + local.get $2 call $~lib/rt/pure/__release end i32.const 18624 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 16 i32.sub i32.load offset=12 @@ -3162,38 +3158,38 @@ i32.shl local.tee $4 i32.add - local.tee $1 + local.tee $5 i32.eqz if - local.get $0 + local.get $2 call $~lib/rt/pure/__release i32.const 1040 br $__inlined_func$~lib/string/String#concat end call $~lib/rt/tlsf/maybeInitialize - local.get $1 + local.get $5 i32.const 1 call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $1 + local.tee $5 local.get $3 local.get $4 call $~lib/memory/memory.copy - local.get $1 local.get $4 + local.get $5 i32.add - local.get $0 + local.get $2 local.get $6 call $~lib/memory/memory.copy - local.get $0 + local.get $2 call $~lib/rt/pure/__release - local.get $1 + local.get $5 end - local.get $2 + local.get $0 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release ) (func $start:std/string-casemapping diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index ec19911a23..e586d66483 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1308,10 +1308,8 @@ ) (func $std/string-encoding/testUTF16Encode (local $0 i32) - (local $1 i32) i32.const 1040 call $~lib/string/String.UTF16.encode - local.tee $1 local.tee $0 i32.const 16 i32.sub @@ -1466,7 +1464,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release ) (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) @@ -2099,11 +2097,9 @@ ) (func $std/string-encoding/testUTF8Encode (local $0 i32) - (local $1 i32) i32.const 1040 i32.const 0 call $~lib/string/String.UTF8.encode - local.tee $1 local.tee $0 i32.const 16 i32.sub @@ -2238,16 +2234,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release ) (func $std/string-encoding/testUTF8EncodeNullTerminated (local $0 i32) - (local $1 i32) i32.const 1040 i32.const 1 call $~lib/string/String.UTF8.encode - local.tee $1 local.tee $0 i32.const 16 i32.sub @@ -2392,7 +2386,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release ) (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 1359bc8237..7df53e19ad 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -4278,29 +4278,31 @@ block $__inlined_func$~lib/string/String#concat (result i32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $0 i32.const 1648 - local.get $2 + local.get $0 select local.set $3 local.get $1 call $~lib/rt/pure/__retain - local.tee $5 + local.tee $1 + local.set $2 + local.get $2 call $~lib/rt/pure/__retain - local.tee $0 + local.tee $2 i32.eqz if - local.get $0 + local.get $2 i32.const 1648 i32.ne if - local.get $0 + local.get $2 call $~lib/rt/pure/__release end i32.const 1648 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 16 i32.sub i32.load offset=12 @@ -4319,38 +4321,38 @@ i32.shl local.tee $4 i32.add - local.tee $1 + local.tee $5 i32.eqz if - local.get $0 + local.get $2 call $~lib/rt/pure/__release i32.const 1280 br $__inlined_func$~lib/string/String#concat end call $~lib/rt/tlsf/maybeInitialize - local.get $1 + local.get $5 i32.const 1 call $~lib/rt/tlsf/allocateBlock i32.const 16 i32.add call $~lib/rt/pure/__retain - local.tee $1 + local.tee $5 local.get $3 local.get $4 call $~lib/memory/memory.copy - local.get $1 local.get $4 + local.get $5 i32.add - local.get $0 + local.get $2 local.get $6 call $~lib/memory/memory.copy - local.get $0 + local.get $2 call $~lib/rt/pure/__release - local.get $1 + local.get $5 end - local.get $2 + local.get $0 call $~lib/rt/pure/__release - local.get $5 + local.get $1 call $~lib/rt/pure/__release ) (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) @@ -4908,11 +4910,11 @@ (local $10 i32) local.get $1 call $~lib/rt/pure/__retain - local.set $8 + local.set $7 local.get $2 call $~lib/rt/pure/__retain - local.set $6 - block $folding-inner0 + local.set $5 + block $folding-inner1 (result i32) local.get $0 i32.const 16 i32.sub @@ -4920,7 +4922,7 @@ i32.const 1 i32.shr_u local.tee $4 - local.get $8 + local.get $7 i32.const 16 i32.sub i32.load offset=12 @@ -4936,298 +4938,292 @@ local.get $0 call $~lib/rt/pure/__retain else - local.get $6 + local.get $5 local.get $0 - local.get $8 + local.get $7 local.get $0 call $~lib/string/String.__eq select call $~lib/rt/pure/__retain end - local.set $0 - br $folding-inner0 + br $folding-inner1 end - local.get $6 + local.get $5 i32.const 16 i32.sub i32.load offset=12 i32.const 1 i32.shr_u local.set $2 - local.get $10 - i32.eqz - if - local.get $2 + block $folding-inner0 + local.get $10 i32.eqz if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + local.get $2 + i32.eqz + if + local.get $0 + call $~lib/rt/pure/__retain + br $folding-inner1 + end + call $~lib/rt/tlsf/maybeInitialize + local.get $4 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/tlsf/allocateBlock + i32.const 16 + i32.add + local.tee $3 + local.get $5 + local.get $2 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.set $1 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_u + if + local.get $3 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $3 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $2 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $2 + i32.add + local.set $1 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end br $folding-inner0 end - call $~lib/rt/tlsf/maybeInitialize - local.get $4 local.get $2 + local.get $10 + i32.eq + if + call $~lib/rt/tlsf/maybeInitialize + local.get $4 + i32.const 1 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/tlsf/allocateBlock + i32.const 16 + i32.add + local.tee $1 + local.get $0 + local.get $3 + 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 + i32.const -1 + i32.xor + if + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $2 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $10 + i32.add + local.set $6 + br $while-continue|1 + end + end + local.get $1 + call $~lib/rt/pure/__retain + br $folding-inner1 + end local.get $4 - i32.const 1 - i32.add - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $3 - local.get $6 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 local.set $1 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_u + loop $while-continue|2 + local.get $0 + local.get $7 + local.get $6 + call $~lib/string/String#indexOf + local.tee $9 + i32.const -1 + i32.xor if local.get $3 + i32.eqz + if + call $~lib/rt/tlsf/maybeInitialize + local.get $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/tlsf/allocateBlock + i32.const 16 + i32.add + local.set $3 + end + local.get $8 local.get $1 + i32.gt_u + if + local.get $3 + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__realloc + local.set $3 + end + local.get $3 + local.get $8 i32.const 1 i32.shl i32.add local.get $0 - local.get $9 + local.get $6 i32.const 1 i32.shl i32.add - i32.load16_u - i32.store16 - local.get $3 - local.get $1 + local.get $9 + local.get $6 + i32.sub + local.tee $6 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $6 + local.get $8 i32.add - local.tee $1 + local.tee $6 i32.const 1 i32.shl i32.add - local.get $6 + local.get $5 local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $1 local.get $2 + local.get $6 i32.add - local.set $1 + local.set $8 local.get $9 - i32.const 1 + local.get $10 i32.add - local.set $9 - br $for-loop|0 + local.set $6 + br $while-continue|2 end end - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - br $folding-inner0 - end - local.get $2 - local.get $10 - i32.eq - if - call $~lib/rt/tlsf/maybeInitialize - local.get $4 - i32.const 1 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $1 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - loop $while-continue|1 - local.get $0 + local.get $8 + if local.get $8 - local.get $5 - call $~lib/string/String#indexOf - local.tee $3 - i32.const -1 - i32.xor + local.get $1 + i32.gt_u if - local.get $1 local.get $3 + local.get $1 i32.const 1 i32.shl - i32.add - local.get $6 - local.get $2 + local.tee $1 i32.const 1 i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $10 - i32.add - local.set $5 - br $while-continue|1 + call $~lib/rt/tlsf/__realloc + local.set $3 end - end - local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - br $folding-inner0 - end - local.get $4 - local.set $1 - loop $while-continue|2 - local.get $0 - local.get $8 - local.get $5 - call $~lib/string/String#indexOf - local.tee $9 - i32.const -1 - i32.xor - if - local.get $3 - i32.eqz + local.get $4 + local.get $6 + i32.sub + local.tee $2 if - call $~lib/rt/tlsf/maybeInitialize - local.get $4 + local.get $3 + local.get $8 i32.const 1 i32.shl + i32.add + local.get $0 + local.get $6 i32.const 1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 + i32.shl i32.add - local.set $3 + local.get $2 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy end - local.get $7 local.get $1 + local.get $2 + local.get $8 + i32.add + local.tee $0 i32.gt_u if local.get $3 - local.get $1 - i32.const 1 - i32.shl - local.tee $1 + local.get $0 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc local.set $3 end - local.get $3 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $9 - local.get $5 - i32.sub - local.tee $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $5 - local.get $7 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $7 - local.get $9 - local.get $10 - i32.add - local.set $5 - br $while-continue|2 + br $folding-inner0 end - end - local.get $7 - if + local.get $0 + call $~lib/rt/pure/__retain local.get $7 - local.get $1 - i32.gt_u - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - local.set $3 - end - local.get $4 + call $~lib/rt/pure/__release local.get $5 - i32.sub - local.tee $2 - if - local.get $3 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $1 - local.get $2 - local.get $7 - i32.add - local.tee $0 - i32.gt_u - if (result i32) - local.get $3 - local.get $0 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - else - local.get $3 - end - call $~lib/rt/pure/__retain - local.set $0 - br $folding-inner0 + call $~lib/rt/pure/__release + return end - local.get $0 + local.get $3 call $~lib/rt/pure/__retain - local.get $8 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - return end - local.get $8 + local.get $7 call $~lib/rt/pure/__release - local.get $6 + local.get $5 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -5744,232 +5740,235 @@ (local $10 i32) local.get $1 call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner1 - block $folding-inner0 - local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $1 - i32.eqz - if - i32.const 1 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - br $folding-inner1 - end - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - local.set $3 - i32.const 2147483647 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $6 - local.get $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - local.tee $2 - local.set $8 - local.get $2 - if - local.get $3 + local.set $4 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + local.get $2 + i32.eqz + br_if $folding-inner0 + local.get $4 i32.eqz if i32.const 1 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.load offset=4 - i32.const 1280 + local.get $0 + call $~lib/rt/pure/__retain i32.store local.get $1 - call $~lib/rt/pure/__release - local.get $0 - return + local.set $0 + br $folding-inner1 end - else - local.get $3 - i32.eqz - br_if $folding-inner0 - local.get $3 - local.get $6 - local.get $3 - local.get $6 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.set $3 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 i32.lt_s select - local.tee $5 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $6 - loop $for-loop|0 - local.get $4 - local.get $5 - i32.lt_s + local.set $2 + local.get $4 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $1 + local.set $8 + local.get $1 + if + local.get $3 + i32.eqz if - call $~lib/rt/tlsf/maybeInitialize - i32.const 2 i32.const 1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $2 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $2 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $0 + i32.load offset=4 + i32.const 1280 i32.store + br $folding-inner1 + end + else + local.get $3 + i32.eqz + br_if $folding-inner0 + local.get $3 + local.get $2 + local.get $3 + local.get $2 + i32.lt_s + select + local.tee $2 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + i32.load offset=4 + local.set $3 + loop $for-loop|0 + local.get $6 local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + i32.lt_s + if + call $~lib/rt/tlsf/maybeInitialize + i32.const 2 + i32.const 1 + call $~lib/rt/tlsf/allocateBlock + i32.const 16 + i32.add + local.tee $1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $1 + call $~lib/rt/pure/__retain + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end end + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + return end - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $2 - loop $while-continue|1 - local.get $0 - local.get $1 - local.get $5 - call $~lib/string/String#indexOf - local.tee $4 - i32.const -1 - i32.xor - if + i32.const 0 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.set $1 + loop $while-continue|1 + local.get $0 local.get $4 local.get $5 - i32.sub - local.tee $7 - i32.const 0 - i32.gt_s + call $~lib/string/String#indexOf + local.tee $6 + i32.const -1 + i32.xor if - call $~lib/rt/tlsf/maybeInitialize - local.get $7 - i32.const 1 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $9 - local.get $0 + local.get $6 local.get $5 + i32.sub + local.tee $7 + i32.const 0 + i32.gt_s + if + call $~lib/rt/tlsf/maybeInitialize + local.get $7 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/tlsf/allocateBlock + i32.const 16 + i32.add + local.tee $9 + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $7 + call $~lib/memory/memory.copy + local.get $1 + local.get $9 + call $~lib/array/Array<~lib/string/String>#push + else + local.get $1 + i32.const 1280 + call $~lib/array/Array<~lib/string/String>#push + end + local.get $10 i32.const 1 - i32.shl i32.add - local.get $7 - call $~lib/memory/memory.copy + local.tee $10 local.get $2 - local.get $9 - call $~lib/array/Array<~lib/string/String>#push - else - local.get $2 - i32.const 1280 - call $~lib/array/Array<~lib/string/String>#push + i32.eq + br_if $folding-inner2 + local.get $6 + local.get $8 + i32.add + local.set $5 + br $while-continue|1 end - local.get $10 + end + local.get $5 + i32.eqz + if + local.get $1 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner2 + end + local.get $3 + local.get $5 + i32.sub + local.tee $2 + i32.const 0 + i32.gt_s + if + call $~lib/rt/tlsf/maybeInitialize + local.get $2 + i32.const 1 + i32.shl + local.tee $2 i32.const 1 + call $~lib/rt/tlsf/allocateBlock + i32.const 16 i32.add - local.tee $10 - local.get $6 - i32.eq - br_if $folding-inner1 - local.get $4 - local.get $8 + local.tee $3 + local.get $0 + local.get $5 + i32.const 1 + i32.shl i32.add - local.set $5 - br $while-continue|1 + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/string/String>#push + else + local.get $1 + i32.const 1280 + call $~lib/array/Array<~lib/string/String>#push end + br $folding-inner2 end - local.get $5 - i32.eqz - if - local.get $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - br $folding-inner1 - end - local.get $3 - local.get $5 - i32.sub - local.tee $3 i32.const 0 - i32.gt_s - if - call $~lib/rt/tlsf/maybeInitialize - local.get $3 - i32.const 1 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $4 - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - else - local.get $2 - i32.const 1280 - call $~lib/array/Array<~lib/string/String>#push - end - br $folding-inner1 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.set $0 end - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 + local.get $4 call $~lib/rt/pure/__release + local.get $0 return end - local.get $1 + local.get $4 call $~lib/rt/pure/__release - local.get $2 + local.get $1 ) (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 5f20449512..96eba3ce30 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -536,17 +536,17 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $2 + local.set $4 + local.get $5 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -559,32 +559,31 @@ i32.const 12 i32.mul i32.add - local.set $8 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 local.get $5 - local.get $8 + local.get $7 i32.ne if local.get $5 - local.tee $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $4 + local.get $5 i32.load i32.store local.get $2 - local.get $4 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $6 local.get $4 + local.get $5 i32.load call $~lib/util/hash/hashStr local.get $1 @@ -592,10 +591,10 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $6 i32.load i32.store offset=8 - local.get $4 + local.get $6 local.get $2 i32.store local.get $2 @@ -610,14 +609,14 @@ br $while-continue|0 end end - local.get $6 - local.tee $2 + local.get $4 + local.tee $5 local.get $0 i32.load i32.ne drop local.get $0 - local.get $2 + local.get $5 i32.store local.get $0 local.get $1 @@ -632,7 +631,7 @@ local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $8 i32.store offset=12 local.get $0 local.get $0 @@ -809,17 +808,17 @@ local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $5 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $2 + local.set $4 + local.get $5 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -832,32 +831,31 @@ i32.const 12 i32.mul i32.add - local.set $8 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 local.get $5 - local.get $8 + local.get $7 i32.ne if local.get $5 - local.tee $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $4 + local.get $5 i32.load i32.store local.get $2 - local.get $4 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $6 local.get $4 + local.get $5 i32.load call $~lib/util/hash/hash32 local.get $1 @@ -865,10 +863,10 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $6 i32.load i32.store offset=8 - local.get $4 + local.get $6 local.get $2 i32.store local.get $2 @@ -883,14 +881,14 @@ br $while-continue|0 end end - local.get $6 - local.tee $2 + local.get $4 + local.tee $5 local.get $0 i32.load i32.ne drop local.get $0 - local.get $2 + local.get $5 i32.store local.get $0 local.get $1 @@ -905,7 +903,7 @@ local.get $1 i32.store offset=8 local.get $0 - local.get $7 + local.get $8 i32.store offset=12 local.get $0 local.get $0 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 57c55a5358..c01f9c00c3 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -29934,15 +29934,15 @@ (local $14 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $7 + local.tee $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $7 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $7 + local.get $6 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set @@ -29966,93 +29966,95 @@ call $~lib/typedarray/Uint8Array#__set i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $8 + local.tee $7 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $8 + local.get $7 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $8 + local.get $7 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set i32.const 10 call $~lib/typedarray/Float64Array#constructor - local.tee $13 + local.tee $14 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $0 call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner1 + local.set $2 + block $folding-inner0 i32.const 8496 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=12 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s - br_if $folding-inner1 - local.get $1 - i32.load offset=4 - local.set $4 + br_if $folding-inner0 local.get $2 i32.load offset=4 + local.set $8 + local.get $3 + i32.load offset=4 local.set $9 - local.get $2 + local.get $3 i32.load offset=12 - local.set $6 + local.set $10 loop $for-loop|0 - local.get $0 - local.get $6 + local.get $1 + local.get $10 i32.lt_s if - local.get $4 - local.get $0 + local.get $8 + local.get $1 i32.const 3 i32.shl i32.add local.get $9 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load f64.convert_i32_s f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $2 + local.get $3 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release i32.const 8496 call $~lib/rt/pure/__release - local.get $3 + local.get $0 i32.const 10 i32.const 3 i32.const 62 i32.const 12048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $9 + local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + local.get $0 + local.set $1 i32.const 0 - local.set $0 - local.get $3 + local.set $2 + local.get $1 call $~lib/rt/pure/__retain local.set $1 i32.const 8560 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=12 i32.const 3 i32.add @@ -30061,62 +30063,69 @@ i32.const 3 i32.shr_u i32.gt_s - br_if $folding-inner1 + if + i32.const 1376 + i32.const 1440 + i32.const 1775 + i32.const 47 + call $~lib/builtins/abort + unreachable + end local.get $1 i32.load offset=4 i32.const 24 i32.add local.set $4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $6 - local.get $2 + local.set $9 + local.get $3 i32.load offset=12 local.set $10 loop $for-loop|00 - local.get $0 + local.get $2 local.get $10 i32.lt_s if local.get $4 - local.get $0 + local.get $2 i32.const 3 i32.shl i32.add - local.get $6 - local.get $0 + local.get $9 + local.get $2 i32.const 2 i32.shl i32.add f32.load f64.promote_f32 f64.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|00 end end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release i32.const 8560 call $~lib/rt/pure/__release - local.get $3 + local.get $0 i32.const 10 i32.const 3 i32.const 62 i32.const 12192 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $6 + local.tee $9 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $3 - local.get $7 + local.get $0 + local.get $6 call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> - local.get $3 + local.get $0 i32.const 10 i32.const 3 i32.const 62 @@ -30126,145 +30135,145 @@ local.tee $10 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> i32.const 0 - local.set $0 + local.set $1 local.get $5 call $~lib/rt/pure/__retain local.set $4 - local.get $3 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 + local.set $2 local.get $4 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=8 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s - br_if $folding-inner1 - local.get $1 + br_if $folding-inner0 + local.get $2 i32.load offset=4 local.set $11 - local.get $2 + local.get $3 i32.load offset=4 local.set $12 - local.get $2 + local.get $3 i32.load offset=8 - local.set $14 + local.set $13 loop $for-loop|001 - local.get $0 - local.get $14 + local.get $1 + local.get $13 i32.lt_s if local.get $11 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add - local.get $0 + local.get $1 local.get $12 i32.add i32.load8_u f64.convert_i32_u f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|001 end end - local.get $2 + local.get $3 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release - local.get $3 - local.get $8 + local.get $0 + local.get $7 call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> i32.const 0 - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain local.set $1 + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 i32.const 8704 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=12 i32.const 7 i32.add - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s - br_if $folding-inner1 - local.get $1 + br_if $folding-inner0 + local.get $2 i32.load offset=4 i32.const 56 i32.add - local.set $4 - local.get $2 - i32.load offset=4 local.set $11 - local.get $2 - i32.load offset=12 + local.get $3 + i32.load offset=4 local.set $12 + local.get $3 + i32.load offset=12 + local.set $13 loop $for-loop|01 - local.get $0 - local.get $12 + local.get $1 + local.get $13 i32.lt_s if - local.get $4 - local.get $0 + local.get $11 + local.get $1 i32.const 3 i32.shl i32.add - local.get $0 - local.get $11 + local.get $1 + local.get $12 i32.add i32.load8_s f64.convert_i32_s f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|01 end end - local.get $2 + local.get $3 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release i32.const 8704 call $~lib/rt/pure/__release - local.get $3 + local.get $0 i32.const 10 i32.const 3 i32.const 62 i32.const 12384 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release - local.get $13 + local.get $14 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release - local.get $9 + local.get $8 call $~lib/rt/pure/__release - local.get $6 + local.get $9 call $~lib/rt/pure/__release local.get $10 call $~lib/rt/pure/__release @@ -32353,28 +32362,28 @@ call $~lib/rt/pure/__release i32.const 2704 call $~lib/rt/pure/__release - block $folding-inner18 - block $folding-inner0 - block $folding-inner17 - block $folding-inner16 - block $folding-inner13 - block $folding-inner12 - block $folding-inner11 - block $folding-inner10 - block $folding-inner9 - block $folding-inner8 - block $folding-inner7 - block $folding-inner6 - block $folding-inner5 - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 + block $folding-inner17 + block $folding-inner16 + block $folding-inner15 + block $folding-inner14 + block $folding-inner11 + block $folding-inner10 + block $folding-inner9 + block $folding-inner8 + block $folding-inner7 + block $folding-inner6 + block $folding-inner5 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 local.get $3 i32.const 255 i32.and i32.const 6 i32.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $6 call $~lib/rt/pure/__release local.get $1 @@ -32402,7 +32411,7 @@ i32.and i32.const 6 i32.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $1 call $~lib/rt/pure/__release local.get $0 @@ -32430,7 +32439,7 @@ i32.and i32.const 6 i32.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $1 call $~lib/rt/pure/__release local.get $0 @@ -32509,7 +32518,7 @@ i32.and i32.const 6 i32.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $6 call $~lib/rt/pure/__release local.get $1 @@ -32588,7 +32597,7 @@ i32.and i32.const 6 i32.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $6 call $~lib/rt/pure/__release local.get $1 @@ -32614,7 +32623,7 @@ call $~lib/typedarray/Int32Array#reduce i32.const 6 i32.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $1 call $~lib/rt/pure/__release local.get $0 @@ -32640,7 +32649,7 @@ call $~lib/typedarray/Int32Array#reduce i32.const 6 i32.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $1 call $~lib/rt/pure/__release local.get $0 @@ -32666,7 +32675,7 @@ call $~lib/typedarray/Int64Array#reduce i64.const 6 i64.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $1 call $~lib/rt/pure/__release local.get $0 @@ -32692,7 +32701,7 @@ call $~lib/typedarray/Int64Array#reduce i64.const 6 i64.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $1 call $~lib/rt/pure/__release local.get $0 @@ -32767,7 +32776,7 @@ local.get $9 f32.const 6 f32.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $5 call $~lib/rt/pure/__release local.get $1 @@ -32842,7 +32851,7 @@ local.get $10 f64.const 6 f64.ne - br_if $folding-inner2 + br_if $folding-inner0 local.get $5 call $~lib/rt/pure/__release local.get $1 @@ -32917,7 +32926,7 @@ i32.and i32.const 6 i32.ne - br_if $folding-inner3 + br_if $folding-inner1 local.get $6 call $~lib/rt/pure/__release local.get $1 @@ -32945,7 +32954,7 @@ i32.and i32.const 6 i32.ne - br_if $folding-inner3 + br_if $folding-inner1 local.get $1 call $~lib/rt/pure/__release local.get $0 @@ -32973,7 +32982,7 @@ i32.and i32.const 6 i32.ne - br_if $folding-inner3 + br_if $folding-inner1 local.get $1 call $~lib/rt/pure/__release local.get $0 @@ -33052,7 +33061,7 @@ i32.and i32.const 6 i32.ne - br_if $folding-inner3 + br_if $folding-inner1 local.get $6 call $~lib/rt/pure/__release local.get $1 @@ -33131,7 +33140,7 @@ i32.and i32.const 6 i32.ne - br_if $folding-inner3 + br_if $folding-inner1 local.get $6 call $~lib/rt/pure/__release local.get $1 @@ -33152,3301 +33161,3298 @@ i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - block $folding-inner1 - local.get $0 - i32.const 3216 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 3248 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 3280 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 3312 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - 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 $5 - call $~lib/rt/pure/__retain - local.tee $1 + local.get $0 + i32.const 3216 + call $~lib/typedarray/Int32Array#reduceRight + i32.const 6 + i32.ne + br_if $folding-inner1 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 3248 + call $~lib/typedarray/Int32Array#reduceRight + i32.const 6 + i32.ne + br_if $folding-inner1 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 3280 + call $~lib/typedarray/Int64Array#reduceRight + i64.const 6 + i64.ne + br_if $folding-inner1 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 3312 + call $~lib/typedarray/Int64Array#reduceRight + i64.const 6 + i64.ne + br_if $folding-inner1 + 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 $5 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + f32.const 0 + local.set $9 + local.get $1 + call $~lib/rt/pure/__retain + local.set $2 + i32.const 3344 + call $~lib/rt/pure/__retain + local.set $4 + local.get $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|07 + local.get $0 i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - f32.const 0 - local.set $9 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3344 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|07 + i32.ge_s + if + local.get $6 local.get $0 - i32.const 0 - i32.ge_s - if - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $12 - i32.const 4 - global.set $~argumentsLength - local.get $9 - local.get $12 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) - local.set $9 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|07 - end + i32.const 2 + i32.shl + i32.add + f32.load + local.set $12 + i32.const 4 + global.set $~argumentsLength + local.get $9 + local.get $12 + local.get $0 + local.get $2 + local.get $4 + i32.load + call_indirect (type $f32_f32_i32_i32_=>_f32) + local.set $9 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|07 end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3344 - call $~lib/rt/pure/__release - local.get $9 - f32.const 6 - f32.ne - br_if $folding-inner1 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 + end + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + i32.const 3344 + call $~lib/rt/pure/__release + local.get $9 + f32.const 6 + f32.ne + br_if $folding-inner1 + local.get $5 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + f64.const 0 + local.set $10 + local.get $1 + call $~lib/rt/pure/__retain + local.set $2 + i32.const 3376 + call $~lib/rt/pure/__retain + local.set $4 + local.get $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|08 + local.get $0 i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - f64.const 0 - local.set $10 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3376 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|08 + i32.ge_s + if + local.get $6 local.get $0 - i32.const 0 - i32.ge_s - if - local.get $6 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $13 - i32.const 4 - global.set $~argumentsLength - local.get $10 - local.get $13 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) - local.set $10 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|08 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3376 - call $~lib/rt/pure/__release - local.get $10 - f64.const 6 - f64.ne - br_if $folding-inner1 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - call $~lib/typedarray/Int8Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - 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/Uint8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - call $~lib/typedarray/Uint8Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - 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/Uint8ClampedArray#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - 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/Int16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - call $~lib/typedarray/Int16Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - 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 $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - 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 $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - call $~lib/typedarray/Int32Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - 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 $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - call $~lib/typedarray/Uint32Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - 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 $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - call $~lib/typedarray/Int64Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner6 - 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 $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - call $~lib/typedarray/Uint64Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner6 - 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 $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - call $~lib/typedarray/Float32Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.ne - br_if $folding-inner6 - 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 $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - call $~lib/typedarray/Float64Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - br_if $folding-inner6 - 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> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4112 - call $~lib/typedarray/Int8Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4144 - call $~lib/typedarray/Int8Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4176 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4208 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4240 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4272 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 4304 - call $~lib/typedarray/Int16Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4336 - call $~lib/typedarray/Int16Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 4368 - call $~lib/typedarray/Uint16Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4400 - call $~lib/typedarray/Uint16Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4432 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4464 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 4496 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4528 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 4560 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4592 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 4624 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4656 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 4688 - call $~lib/typedarray/Float32Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4720 - call $~lib/typedarray/Float32Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4752 - call $~lib/typedarray/Float64Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4784 - call $~lib/typedarray/Float64Array#some - br_if $folding-inner8 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4816 - call $~lib/typedarray/Int8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 4848 - call $~lib/typedarray/Int8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4880 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 4912 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4944 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 4976 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 5008 - call $~lib/typedarray/Int16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5040 - call $~lib/typedarray/Int16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 5072 - call $~lib/typedarray/Uint16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5104 - call $~lib/typedarray/Uint16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 5136 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5168 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 5200 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5232 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 5264 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5296 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 5328 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5360 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 5392 - call $~lib/typedarray/Float32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5424 - call $~lib/typedarray/Float32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5456 - call $~lib/typedarray/Float64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5488 - call $~lib/typedarray/Float64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 5520 - call $~lib/typedarray/Int8Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5552 - call $~lib/typedarray/Int8Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 5584 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5616 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 5648 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5680 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 5712 - call $~lib/typedarray/Int16Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5744 - call $~lib/typedarray/Int16Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 5776 - call $~lib/typedarray/Uint16Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5808 - call $~lib/typedarray/Uint16Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 5840 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5872 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 5904 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5936 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 5968 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 6000 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 6032 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 6064 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 6096 - call $~lib/typedarray/Float32Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 6128 - call $~lib/typedarray/Float32Array#every - br_if $folding-inner12 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 6160 - call $~lib/typedarray/Float64Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 6192 - call $~lib/typedarray/Float64Array#every - br_if $folding-inner12 - 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 $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6288 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - local.set $7 - loop $for-loop|09 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $1 - local.get $6 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|09 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6288 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - 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/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 6320 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 6352 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - 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 $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6384 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $7 - loop $for-loop|010 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|010 - end + i32.const 3 + i32.shl + i32.add + f64.load + local.set $13 + i32.const 4 + global.set $~argumentsLength + local.get $10 + local.get $13 + local.get $0 + local.get $2 + local.get $4 + i32.load + call_indirect (type $f64_f64_i32_i32_=>_f64) + local.set $10 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|08 end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6384 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - 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/Uint16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6416 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $7 - loop $for-loop|011 + end + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + i32.const 3376 + call $~lib/rt/pure/__release + local.get $10 + f64.const 6 + f64.ne + br_if $folding-inner1 + local.get $5 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + call $~lib/typedarray/Int8Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + 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/Uint8Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + call $~lib/typedarray/Uint8Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + 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/Uint8ClampedArray#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + 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/Int16Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + call $~lib/typedarray/Int16Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + 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 $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + call $~lib/typedarray/Uint16Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + 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 $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + call $~lib/typedarray/Int32Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + 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 $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + call $~lib/typedarray/Uint32Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + 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 $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + call $~lib/typedarray/Int64Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.ne + br_if $folding-inner4 + 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 $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + call $~lib/typedarray/Uint64Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.ne + br_if $folding-inner4 + 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 $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 + call $~lib/typedarray/Float32Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 9 + f32.ne + br_if $folding-inner4 + 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 $2 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + call $~lib/typedarray/Float64Array#map + local.tee $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.ne + br_if $folding-inner4 + 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> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 4112 + call $~lib/typedarray/Int8Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4144 + call $~lib/typedarray/Int8Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 4176 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4208 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 4240 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4272 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 4304 + call $~lib/typedarray/Int16Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4336 + call $~lib/typedarray/Int16Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 4368 + call $~lib/typedarray/Uint16Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4400 + call $~lib/typedarray/Uint16Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 4432 + call $~lib/typedarray/Int32Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4464 + call $~lib/typedarray/Int32Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 4496 + call $~lib/typedarray/Int32Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4528 + call $~lib/typedarray/Int32Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 4560 + call $~lib/typedarray/Int64Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4592 + call $~lib/typedarray/Int64Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 4624 + call $~lib/typedarray/Int64Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4656 + call $~lib/typedarray/Int64Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 4688 + call $~lib/typedarray/Float32Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4720 + call $~lib/typedarray/Float32Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 4752 + call $~lib/typedarray/Float64Array#some + i32.eqz + br_if $folding-inner5 + local.get $0 + i32.const 4784 + call $~lib/typedarray/Float64Array#some + br_if $folding-inner6 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 4816 + call $~lib/typedarray/Int8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 4848 + call $~lib/typedarray/Int8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 4880 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 4912 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 4944 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 4976 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 5008 + call $~lib/typedarray/Int16Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 5040 + call $~lib/typedarray/Int16Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 5072 + call $~lib/typedarray/Uint16Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 5104 + call $~lib/typedarray/Uint16Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 5136 + call $~lib/typedarray/Int32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 5168 + call $~lib/typedarray/Int32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 5200 + call $~lib/typedarray/Int32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 5232 + call $~lib/typedarray/Int32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 5264 + call $~lib/typedarray/Int64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 5296 + call $~lib/typedarray/Int64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 5328 + call $~lib/typedarray/Int64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 5360 + call $~lib/typedarray/Int64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 5392 + call $~lib/typedarray/Float32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 5424 + call $~lib/typedarray/Float32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 5456 + call $~lib/typedarray/Float64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $0 + i32.const 5488 + call $~lib/typedarray/Float64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 5520 + call $~lib/typedarray/Int8Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 5552 + call $~lib/typedarray/Int8Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 5584 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 5616 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 5648 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 5680 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 5712 + call $~lib/typedarray/Int16Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 5744 + call $~lib/typedarray/Int16Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 5776 + call $~lib/typedarray/Uint16Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 5808 + call $~lib/typedarray/Uint16Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 5840 + call $~lib/typedarray/Int32Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 5872 + call $~lib/typedarray/Int32Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 5904 + call $~lib/typedarray/Int32Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 5936 + call $~lib/typedarray/Int32Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 5968 + call $~lib/typedarray/Int64Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 6000 + call $~lib/typedarray/Int64Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 6032 + call $~lib/typedarray/Int64Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 6064 + call $~lib/typedarray/Int64Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 6096 + call $~lib/typedarray/Float32Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 6128 + call $~lib/typedarray/Float32Array#every + br_if $folding-inner10 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 6160 + call $~lib/typedarray/Float64Array#every + i32.eqz + br_if $folding-inner9 + local.get $0 + i32.const 6192 + call $~lib/typedarray/Float64Array#every + br_if $folding-inner10 + 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 $5 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + i32.const 0 + local.set $1 + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + i32.const 6288 + call $~lib/rt/pure/__retain + local.set $4 + local.get $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=8 + local.set $7 + loop $for-loop|09 + local.get $1 + local.get $7 + i32.lt_s + if local.get $1 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|011 - end + local.get $6 + i32.add + i32.load8_s + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|09 end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6416 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - 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/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 6448 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 6480 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 6512 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 6544 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 + end + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + i32.const 6288 + call $~lib/rt/pure/__release + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $5 + 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/Uint8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 6320 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 6352 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + 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 $5 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $1 + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + i32.const 6384 + call $~lib/rt/pure/__retain + local.set $4 + local.get $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $7 + loop $for-loop|010 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 $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6576 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $7 - loop $for-loop|012 + local.get $7 + i32.lt_s + if + local.get $6 local.get $1 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|012 - end + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|010 end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6576 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - 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/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6608 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $7 - loop $for-loop|013 + end + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + i32.const 6384 + call $~lib/rt/pure/__release + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $5 + 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/Uint16Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + local.set $1 + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + i32.const 6416 + call $~lib/rt/pure/__retain + local.set $4 + local.get $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $7 + loop $for-loop|011 + local.get $1 + local.get $7 + i32.lt_s + if + local.get $6 local.get $1 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f64_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|013 - end + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|011 end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6608 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - i32.const 1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - local.get $2 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne + end + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + i32.const 6416 + call $~lib/rt/pure/__release + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $5 + 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/Int32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 6448 + call $~lib/typedarray/Int32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 6480 + call $~lib/typedarray/Int32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 6512 + call $~lib/typedarray/Int64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 6544 + call $~lib/typedarray/Int64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + 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 $5 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + i32.const 0 + local.set $1 + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + i32.const 6576 + call $~lib/rt/pure/__retain + local.set $4 + local.get $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $7 + loop $for-loop|012 + local.get $1 + local.get $7 + i32.lt_s if - i32.const 0 - i32.const 1312 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - i32.const 0 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 + local.get $6 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load i32.const 3 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end + global.set $~argumentsLength local.get $1 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $3 - i32.lt_s - if - i32.const 1 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $10 - local.get $10 - f64.ne - local.get $10 - f64.const nan:0x8000000000000 - f64.eq - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end + local.get $2 + local.get $4 + i32.load + call_indirect (type $f32_i32_i32_=>_none) local.get $1 - call $~lib/rt/pure/__release - i32.const 0 + i32.const 1 + i32.add + local.set $1 + br $for-loop|012 end - i32.eqz + end + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + i32.const 6576 + call $~lib/rt/pure/__release + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $5 + 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/Float64Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 6256 + i32.const 0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.const 6256 + i32.const 1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + i32.const 6256 + i32.const 2 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + i32.const 0 + local.set $1 + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + i32.const 6608 + call $~lib/rt/pure/__retain + local.set $4 + local.get $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $7 + loop $for-loop|013 + local.get $1 + local.get $7 + i32.lt_s if - i32.const 0 - i32.const 1312 - i32.const 608 + local.get $6 + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $3 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 613 + i32.shl + i32.add + f64.load i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - i32.const 0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.ge_s - i32.const 1 - local.get $4 - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end + global.set $~argumentsLength local.get $1 - i32.load offset=4 - local.set $5 - loop $while-continue|014 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 1 - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $9 - local.get $9 - f32.ne - local.get $9 - f32.const nan:0x400000 - f32.eq - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|014 - end - end + local.get $2 + local.get $4 + i32.load + call_indirect (type $f64_i32_i32_=>_none) local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.add + local.set $1 + br $for-loop|013 end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - call $~lib/typedarray/Int8Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Int8Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $3 - local.get $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $3 - local.get $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 + end + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + i32.const 6608 + call $~lib/rt/pure/__release + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $5 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + i32.const 1 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.const 0 + f64.const nan:0x8000000000000 + call $~lib/typedarray/Float64Array#__set + local.get $2 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 + i32.const 1312 + i32.const 607 i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - local.get $0 - call $~lib/typedarray/Int16Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Int16Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint16Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 local.get $2 - call $~lib/rt/pure/__release - 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 $1 call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $0 - call $~lib/typedarray/Int32Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Int32Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 + i32.load offset=8 i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - call $~lib/typedarray/Uint32Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint32Array#join + i32.shr_u local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 + i32.ge_s i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - local.get $0 - call $~lib/typedarray/Int64Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Int64Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/pure/__release + select + if + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + end local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - call $~lib/typedarray/Uint64Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint64Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + i32.load offset=4 + local.set $4 + loop $while-continue|0 + local.get $0 + local.get $3 + i32.lt_s + if + i32.const 1 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $10 + local.get $10 + f64.ne + local.get $10 + f64.const nan:0x8000000000000 + f64.eq + select + if + local.get $1 + call $~lib/rt/pure/__release + i32.const 1 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end + end 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 4 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - local.get $0 - call $~lib/typedarray/Float32Array#join - local.tee $2 - i32.const 8304 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Float32Array#join - local.tee $3 - i32.const 8304 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - 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 $1 - call $~lib/rt/pure/__retain - local.tee $0 + end + i32.eqz + if i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 + i32.const 1312 + i32.const 608 i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - call $~lib/typedarray/Float64Array#join - local.tee $2 - i32.const 8304 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Float64Array#join - local.tee $3 - i32.const 8304 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $3 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - i32.const 2 - global.set $~argumentsLength - local.get $0 + i32.const 1312 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $2 + local.get $3 + call $~lib/rt/pure/__retain + local.tee $1 i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select if + local.get $1 + call $~lib/rt/pure/__release i32.const 0 - i32.const 1312 - i32.const 691 - i32.const 3 - call $~lib/builtins/abort - unreachable + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 end - i32.const 2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - i32.const 2 - global.set $~argumentsLength local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - i32.load offset=8 - if - i32.const 0 - i32.const 1312 - i32.const 695 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.load offset=4 + local.set $5 + loop $while-continue|014 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 1 + local.get $5 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $9 + local.get $9 + f32.ne + local.get $9 + f32.const nan:0x400000 + f32.eq + select + if + local.get $1 + call $~lib/rt/pure/__release + i32.const 1 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|014 + end end 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> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 i32.const 0 - f32.const 400 - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 1 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 2 - f32.const inf - call $~lib/typedarray/Float32Array#__set - i32.const 4 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 + end + i32.eqz + if i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $1 + i32.const 1312 + i32.const 614 i32.const 3 - i64.const 300 - call $~lib/typedarray/Int64Array#__set - i32.const 2 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $5 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - local.get $4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> - local.get $0 - local.get $1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $0 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 12480 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $0 + call $~lib/typedarray/Int8Array#join + local.tee $2 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + local.get $0 + call $~lib/typedarray/Int8Array#join + local.tee $3 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + call $~lib/typedarray/Uint8Array#join + local.tee $2 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + local.get $0 + call $~lib/typedarray/Uint8Array#join + local.tee $3 + local.get $3 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + call $~lib/typedarray/Uint8Array#join + local.tee $2 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + local.get $0 + call $~lib/typedarray/Uint8Array#join + local.tee $3 + local.get $3 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + local.get $0 + call $~lib/typedarray/Int16Array#join + local.tee $2 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + local.get $0 + call $~lib/typedarray/Int16Array#join + local.tee $3 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + call $~lib/typedarray/Uint16Array#join + local.tee $2 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + local.get $0 + call $~lib/typedarray/Uint16Array#join + local.tee $3 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $0 + call $~lib/typedarray/Int32Array#join + local.tee $2 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + local.get $0 + call $~lib/typedarray/Int32Array#join + local.tee $3 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + call $~lib/typedarray/Uint32Array#join + local.tee $2 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + local.get $0 + call $~lib/typedarray/Uint32Array#join + local.tee $3 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + local.get $0 + call $~lib/typedarray/Int64Array#join + local.tee $2 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + local.get $0 + call $~lib/typedarray/Int64Array#join + local.tee $3 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + call $~lib/typedarray/Uint64Array#join + local.tee $2 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + local.get $0 + call $~lib/typedarray/Uint64Array#join + local.tee $3 + i32.const 7200 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 4 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + local.get $0 + call $~lib/typedarray/Float32Array#join + local.tee $2 + i32.const 8304 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner14 + local.get $0 + call $~lib/typedarray/Float32Array#join + local.tee $3 + i32.const 8304 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + local.get $2 + call $~lib/rt/pure/__release + 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 $1 + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $0 + call $~lib/typedarray/Float64Array#join + local.tee $2 + i32.const 8304 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner14 + local.get $0 + call $~lib/typedarray/Float64Array#join + local.tee $3 + i32.const 8304 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + local.get $2 + call $~lib/rt/pure/__release + 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 $0 + i32.const 2 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $2 + i32.load offset=8 + if i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 1 - i32.const 300 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 2 - i32.const 100 - call $~lib/typedarray/Uint32Array#__set - local.get $2 + i32.const 1312 + i32.const 691 i32.const 3 - i32.const -1 - call $~lib/typedarray/Uint32Array#__set - i32.const 4 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.load offset=8 + if i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $3 + i32.const 1312 + i32.const 695 i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - local.get $0 - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> - local.get $0 - local.get $3 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 12512 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - return + call $~lib/builtins/abort + unreachable end - br $folding-inner3 + 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> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.set $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $4 + i32.const 0 + f32.const 400 + call $~lib/typedarray/Float32Array#__set + local.get $4 + i32.const 1 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $4 + i32.const 2 + f32.const inf + call $~lib/typedarray/Float32Array#__set + i32.const 4 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const -10 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 100 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 10 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 3 + i64.const 300 + call $~lib/typedarray/Int64Array#__set + i32.const 2 + call $~lib/typedarray/Int32Array#constructor + local.tee $5 + i32.const 0 + i32.const 300 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 1 + i32.const -1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> + local.get $0 + local.get $1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + local.get $0 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> + local.get $0 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 12480 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 1 + i32.const 300 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 2 + i32.const 100 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 3 + i32.const -1 + call $~lib/typedarray/Uint32Array#__set + i32.const 4 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.const 0 + i32.const -10 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 10 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 3 + i32.const 300 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> + local.get $0 + local.get $3 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + local.get $0 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 12512 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $0 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + return end i32.const 0 i32.const 1312